diff --git src/simutrans/vehicle/rail_vehicle.cc src/simutrans/vehicle/rail_vehicle.cc
index 3d88546e3..6c790f717 100644
--- src/simutrans/vehicle/rail_vehicle.cc
+++ src/simutrans/vehicle/rail_vehicle.cc
@@ -415,7 +415,7 @@ bool rail_vehicle_t::is_choose_signal_clear(signal_t *sig, const route_t::index_
 		}
 		if(  way->has_signal()  ) {
 			signal_t *sig = gr->find<signal_t>(1);
-			if(  sig  &&  sig->get_desc()->is_choose_sign()  ) {
+			if(  sig  &&  sig->get_desc()->is_choose_sign()  &&  !( sig->get_two_ways() && !(ribi_type(cnv->get_route()->at(idx), cnv->get_route()->at(idx-1)) & sig->get_dir()) )) {
 				// second choose signal on route => not choosing here
 				choose_ok = false;
 			}
