I got the same problem and I changed the code in script\train_control_signals.lua to the following (starting line 135) and wasn't able to reproduce the behaviour. (unzip it, change the code, zip it)
local current = schedule.current
local index = current
while true do
index = index - 1
if index == 0 then index = #schedule.records end
if index == current then break end
if schedule.records[index].station then
if station_is_open_depot(schedule.records[index].station) then
schedule.current = index
break
end
if not station_is_disabled(schedule.records[index].station) then
break
end
end
end
end