diff --git a/flatland/envs/generators.py b/flatland/envs/generators.py
index 8fa40c8eb3fe74e3fab41cc16acc93cd134b391b..09661f6f39f928869e07a385a17b140b4acc86e9 100644
--- a/flatland/envs/generators.py
+++ b/flatland/envs/generators.py
@@ -896,16 +896,22 @@ def realistic_rail_generator(nr_start_goal=1, seed=0, add_max_dead_end=4, two_tr
         agents_target = []
         agents_direction = []
 
+        remove_a = []
         for a in range(len(agents_positions)):
             cell_transitions = grid_map.get_transitions(agents_positions[a][0], agents_positions[a][1],
                                                         agents_directions[a])
             if np.sum(cell_transitions) == 0:
-                agents_directions[a] += 2
-                agents_directions[a] = agents_directions[a] % 4
-                cell_transitions = grid_map.get_transitions(agents_positions[a][0], agents_positions[a][1],
-                                                            agents_directions[a])
+                for i in range(4):
+                    agents_directions[a] = i
+                    cell_transitions = grid_map.get_transitions(agents_positions[a][0], agents_positions[a][1],
+                                                                agents_directions[a])
+                    if np.sum(cell_transitions) != 0:
+                        break
                 if np.sum(cell_transitions):
-                    print(a, "bug")
+                    remove_a.extend([a])
+        for i in range(len(remove_a)):
+            agents_positions.pop(i)
+            agents_directions.pop(i)
 
         for a in range(min(len(agents_targets), num_agents)):
             t = np.random.choice(range(len(agents_targets)))