Index: src/uk/me/parabola/imgfmt/app/net/RouteNode.java
===================================================================
--- src/uk/me/parabola/imgfmt/app/net/RouteNode.java	(revision 4139)
+++ 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;
@@ -209,7 +210,25 @@
 			boolean useCompactDirs = true;
 			IntArrayList initialHeadings = new IntArrayList(arcs.size()+1);
 			RouteArc lastArc = null;
+			Int2IntOpenHashMap bearingCounterMap = new Int2IntOpenHashMap();
+			bearingCounterMap.defaultReturnValue(0);
 			for (RouteArc arc: arcs){
+				if (!arc.isDirect() )
+					continue;
+				if (!arc.isForward())
+					continue;
+				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);
+			}
+
+			for (RouteArc arc: arcs){
 				if (lastArc == null || lastArc.getIndexA() != arc.getIndexA() || lastArc.isForward() != arc.isForward()){
 					int dir = RouteArc.directionFromDegrees(arc.getInitialHeading());
 					dir = (dir + 8) & 0xf0;
