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

    count = 0
    prev_change = None

    for i in range(1, len(readings)):
        if readings[i] > readings[i - 1]:
            change = "rise"
        elif readings[i] < readings[i - 1]:
            change = "fall"
        else:
            continue

        if prev_change != change:
            count += 1
            prev_change = change

    return count
```