# Requirement change

Two things landed on my desk. Energy audit says our cars sit parked on random floors all day, and
reception says the lobby wait in the afternoon is terrible because every lift is stranded upstairs.
Same fix for both: **a lift with nothing to do goes home.**

Home is the lobby, floor 1, for all three lifts.

How it should behave:

- The moment a lift finishes its last stop, it starts making its way back to floor 1. Not teleport —
  it travels, one floor per tick, exactly as it does when it is carrying somebody.
- **Going home is not a stop.** Floor 1 must not appear in that lift's pending stops while it is on
  its way; there is nobody waiting there. If you ask what the lift still has to do, the answer is
  nothing.
- While it is travelling home its direction reads the way it is actually going — DOWN if it is coming
  down. It reads IDLE once it is parked at home, on the tick after it arrives. Same rule as any other
  arrival: getting there and settling are different ticks.
- **A real call always wins.** If a call comes in while a lift is heading home, it abandons the trip
  and serves the call — and then, once that is done, it starts heading home again. Repeat for ever.
- A lift already sitting at floor 1 with nothing to do simply stays there and stays IDLE. It must not
  twitch.
- This changes nothing about which lift is chosen. The dispatcher rule is exactly as it was, and a
  lift on its way home is a perfectly normal candidate — it just happens to be travelling.

Nothing else changes: capacity, direction order, withdrawal, the errors, all as before.

> Be aware that this genuinely changes how the lifts behave when they are idle, so some of the
> original acceptance checks about a lift staying where it finished no longer describe the system you
> have been asked for. That is the requirement, not a mistake.
