```python
def wave_count(readings: list) -> int:
    """
    Count the number of times a run of readings changes direction.
    
    Args:
    readings (list): A list of integers representing the readings.
    
    Returns:
    int: The number of direction changes.
    """
    if not readings:
        return 0
    
    changes = 0
    for i in range(1, len(readings)):
        if (readings[i] > readings[i - 1] and readings[i - 1] < readings[i + 1]) or \
           (readings[i] < readings[i - 1] and readings[i - 1] > readings[i + 1]):
            changes += 1
    
    return changes
```