Index: uk/me/parabola/mkgmap/osmstyle/StyledConverter.java
===================================================================
--- uk/me/parabola/mkgmap/osmstyle/StyledConverter.java	(revision 3114)
+++ uk/me/parabola/mkgmap/osmstyle/StyledConverter.java	(working copy)
@@ -57,6 +57,7 @@
 import uk.me.parabola.mkgmap.reader.osm.Element;
 import uk.me.parabola.mkgmap.reader.osm.FeatureKind;
 import uk.me.parabola.mkgmap.reader.osm.GType;
+import uk.me.parabola.mkgmap.reader.osm.HighwayHooks;
 import uk.me.parabola.mkgmap.reader.osm.Node;
 import uk.me.parabola.mkgmap.reader.osm.OsmConverter;
 import uk.me.parabola.mkgmap.reader.osm.Relation;
@@ -1855,7 +1856,7 @@
 			if (way == null)
 				continue;
 			
-			if (way.getId() == lastId) {
+			if (way.getId() == lastId || way.getId() == lastId + HighwayHooks.CYCLEWAY_ID_OFFSET) {
 				log.debug("Road with identical id:", way.getId());
 				dupIdHighways.add(way);
 				continue;
Index: uk/me/parabola/mkgmap/reader/osm/HighwayHooks.java
===================================================================
--- uk/me/parabola/mkgmap/reader/osm/HighwayHooks.java	(revision 3115)
+++ uk/me/parabola/mkgmap/reader/osm/HighwayHooks.java	(working copy)
@@ -32,7 +32,7 @@
 public class HighwayHooks extends OsmReadingHooksAdaptor {
 	private static final Logger log = Logger.getLogger(HighwayHooks.class);
 
-	private static final long CYCLEWAY_ID_OFFSET = 0x10000000;
+	public static final long CYCLEWAY_ID_OFFSET = 0x10000000;
 
 	private final List<Way> motorways = new ArrayList<Way>();
 	private final List<Node> exits = new ArrayList<Node>();
