Index: src/uk/me/parabola/imgfmt/app/net/RouteNode.java
===================================================================
--- src/uk/me/parabola/imgfmt/app/net/RouteNode.java	(revision 4135)
+++ src/uk/me/parabola/imgfmt/app/net/RouteNode.java	(working copy)
@@ -14,6 +14,7 @@
  */
 package uk.me.parabola.imgfmt.app.net;
 
+import it.unimi.dsi.fastutil.ints.Int2IntOpenHashMap;
 import it.unimi.dsi.fastutil.ints.IntArrayList;
 import java.util.ArrayList;
 import java.util.Collections;
@@ -224,7 +225,8 @@
 			initialHeadings.add(0); // add dummy 0 so that we don't have to check for existence
 			arcs.get(arcs.size() - 1).setLast();
 			lastArc = null;
-			
+			Int2IntOpenHashMap bearingCounterMap = new Int2IntOpenHashMap();
+			bearingCounterMap.defaultReturnValue(0);
 			int index = 0;
 			for (RouteArc arc: arcs){
 				Byte compactedDir = null;
@@ -234,6 +236,16 @@
 							compactedDir = (byte) ((initialHeadings.get(index) >> 4) | initialHeadings.getInt(index+1));
 						index++;
 					}
+				} else {
+					int dir = RouteArc.directionFromDegrees(arc.getInitialHeading());
+					int n = bearingCounterMap.get(dir) + 1;
+					if (n == 4) {
+						int bearing = ((int) arc.getInitialHeading() + 360) % 360; 
+						log.error(n, "or more arcs with the same initial bearing, expect routing problems at",
+								this.coord.toDegreeString(), "when routing to",
+								bearing + "°", arc.getRoadDef());
+					}
+					bearingCounterMap.put(dir, n);
 				}
 				arc.write(writer, lastArc, useCompactDirs, compactedDir);
 				lastArc = arc;
