Probably irrelevant with all this map rewrite.

Index: rail_cmd.c
===================================================================
--- rail_cmd.c	(revision 564)
+++ rail_cmd.c	(working copy)
@@ -1320,46 +1332,41 @@
 			_detailed_track_proc[_map2[ti->tile] & RAIL_MAP2LO_GROUND_MASK](ti);
 		}
 
-		/* draw signals also? */
+		/* draw also signals? */
 		if (!(ti->map5 & RAIL_TYPE_SIGNALS))
 			return;
 
-		{
-			byte m23;
+#define HAS_SIGNAL(x) (_map3_lo[ti->tile] & (byte)(0x10 << (x)))
+#define ISON_SIGNAL(x) (_map2[ti->tile] & (byte)(0x10 << (x)))
+#define MAYBE_DRAW_SIGNAL(x,y,z) if (HAS_SIGNAL(x)) DrawSignalHelper(ti, ISON_SIGNAL(x), (y << 4)|(z))
 
-			m23 = (_map3_lo[ti->tile] >> 4) | (_map2[ti->tile] & 0xF0);
-
-#define HAS_SIGNAL(x) (m23 & (byte)(0x1 << (x)))
-#define ISON_SIGNAL(x) (m23 & (byte)(0x10 << (x)))
-#define MAYBE_DRAW_SIGNAL(x,y,z) if (HAS_SIGNAL(x)) DrawSignalHelper(ti, ISON_SIGNAL(x), ((y-0x4FB) << 4)|(z))
-
 		if (!(m5 & RAIL_BIT_DIAG2)) {
 			if (!(m5 & RAIL_BIT_DIAG1)) {
 				if (m5 & RAIL_BIT_LEFT) {
-					MAYBE_DRAW_SIGNAL(2, 0x509, 0);
-					MAYBE_DRAW_SIGNAL(3, 0x507, 1);
+					MAYBE_DRAW_SIGNAL(2, 14, 0);
+					MAYBE_DRAW_SIGNAL(3, 12, 1);
 				}
 				if (m5 & RAIL_BIT_RIGHT) {
-					MAYBE_DRAW_SIGNAL(0, 0x509, 2);
-					MAYBE_DRAW_SIGNAL(1, 0x507, 3);
+					MAYBE_DRAW_SIGNAL(0, 14, 2);
+					MAYBE_DRAW_SIGNAL(1, 12, 3);
 				}
 				if (m5 & RAIL_BIT_UPPER) {
-					MAYBE_DRAW_SIGNAL(3, 0x505, 4);
-					MAYBE_DRAW_SIGNAL(2, 0x503, 5);
+					MAYBE_DRAW_SIGNAL(3, 10, 4);
+					MAYBE_DRAW_SIGNAL(2, 8, 5);
 				}
 				if (m5 & RAIL_BIT_LOWER) {
-					MAYBE_DRAW_SIGNAL(1, 0x505, 6);
-					MAYBE_DRAW_SIGNAL(0, 0x503, 7);
+					MAYBE_DRAW_SIGNAL(1, 10, 6);
+					MAYBE_DRAW_SIGNAL(0, 8, 7);
 				}
 			} else {
-				MAYBE_DRAW_SIGNAL(3, 0x4FB, 8);
-				MAYBE_DRAW_SIGNAL(2, 0x4FD, 9);
+				MAYBE_DRAW_SIGNAL(3, 0, 8);
+				MAYBE_DRAW_SIGNAL(2, 2, 9);
 			}
 		} else {
-			MAYBE_DRAW_SIGNAL(3, 0x4FF, 10);
-			MAYBE_DRAW_SIGNAL(2, 0x501, 11);
+			MAYBE_DRAW_SIGNAL(3, 4, 10);
+			MAYBE_DRAW_SIGNAL(2, 6, 11);
 		}
-		}
+
 	} else {
 		const byte *s;
 		const DrawTrackSeqStruct *drss;
