With bidirectional trains, the schedule is advanced one extra time every time the train reverses direction, but the train will maintain the original target until it stops to the next station, after which it will again advance the schedule and pick the next station, ultimately skipping a stop. You can work around this by adding the station which comes after a reverse twice in the schedule: Let's say you have stations <A, >B, >C (arrows for the direction of the station), you can make a schedule A,A,B,B,C and it will work, because it will change directions at A and C. I have tested this workaround with moderately complex scenarios and it works consistently, but it may show strange behavior initially depending where the train stops first after the schedule is activated. I believe this is a legit bug related to the schedule handling of bidirectional trains.