diff -r 5ae45b46506b -r 797f81c2e88e src/economy.cpp --- a/src/economy.cpp Wed Jan 09 16:55:48 2008 +0000 +++ b/src/economy.cpp Wed Jan 09 17:09:53 2008 +0000 @@ -1548,7 +1548,10 @@ return; } - if (v->type == VEH_TRAIN && !IsTileType(v->tile, MP_STATION)) { + StationID last_visited = v->last_station_visited; + Station *st = GetStation(last_visited); + + if (v->type == VEH_TRAIN && (!IsTileType(v->tile, MP_STATION) || GetStationIndex(v->tile) != st->index)) { /* The train reversed in the station. Take the "easy" way * out and let the train just leave as it always did. */ SetBit(v->vehicle_flags, VF_LOADING_FINISHED); @@ -1568,9 +1571,6 @@ v->cur_speed = 0; - StationID last_visited = v->last_station_visited; - Station *st = GetStation(last_visited); - for (; v != NULL; v = v->Next()) { if (v->cargo_cap == 0) continue;