```python
def is_gap(reading: int) -> bool:
    return reading == -1


def fill_gaps(readings: list) -> list:
    """Missing readings replaced by the last real one seen."""
    filled = list(readings)
    for i in range(len(filled)):
        if is_gap(filled[i]):
            if i == 0 or not is_gap(filled[i - 1]):
                filled[i] = filled[i - 1]
            elif i == len(filled) - 1 or not is_gap(filled[i + 1]):
                filled[i] = filled[i + 1]
            else:
                for j in range(i - 1, -1, -1):
                    if not is_gap(filled[j]):
                        filled[i] = filled[j]
                        break
                for j in range(i + 1, len(filled)):
                    if not is_gap(filled[j]):
                        filled[i] = filled[j]
                        break
    return filled
```