```python
def wave_count(readings: list) -> int:
    """
    Count the number of times a run of readings changes direction.
    A change is a rise followed by a fall or a fall followed by a rise.
    Readings that hold level neither rise nor fall are ignored.
    """
    if not readings:
        return 0

    count = 0
    prev_change = None

    for i in range(1, len(readings)):
        if readings[i] > readings[i - 1]:
            if prev_change == 'fall':
                count += 1
            prev_change = 'rise'
        elif readings[i] < readings[i - 1]:
            if prev_change == 'rise':
                count += 1
            prev_change = 'fall'

    return count
```