Index: src/uk/me/parabola/imgfmt/app/net/AngleChecker.java
===================================================================
--- src/uk/me/parabola/imgfmt/app/net/AngleChecker.java	(revision 4140)
+++ src/uk/me/parabola/imgfmt/app/net/AngleChecker.java	(working copy)
@@ -97,12 +97,26 @@
 				modIH += 360; 
 			initialHeading = modIH;
 			imgHeading = calcEncodedBearing(initialHeading); 
+			setOrSpreadArcHeading();
+		}
+		
+		/**
+		 * if there are multiple arcs in this group, change them so that they have slightly different headings
+		 */
+		private void setOrSpreadArcHeading() {
+			if (arcs.size() > 1) {
+				float deltaInc = 360.0f / 256;
+				float delta = -1 * (arcs.size() -1) * deltaInc / 2;
+				for (RouteArc arc : arcs){
+					arc.setInitialHeading(this.initialHeading + delta);
+					delta += deltaInc;
+				}
+			} else {
+				arcs.get(0).setInitialHeading(this.initialHeading);
+			}
 			
-			for (RouteArc arc : arcs){
-				arc.setInitialHeading(modIH);
-			}
 		}
-		
+
 		public String toString(){
 			return arcs.get(0).toString();
 		}
@@ -358,7 +372,6 @@
 		}
 		if (directArcs.size() < 2)
 			return arcGroups; // should not happen
-		
 		// sort the arcs by initial heading 
 		Collections.sort(directArcs, new Comparator<RouteArc>() {
 				public int compare(RouteArc ra1, RouteArc ra2) {
@@ -401,7 +414,9 @@
 		}
 		for (ArcGroup ag : arcGroups){
 			ag.imgHeading = calcEncodedBearing(ag.initialHeading);
+			ag.setOrSpreadArcHeading();
 		}
+		
 		return arcGroups;
 	}
 
