diff --git a/src/uk/me/parabola/imgfmt/app/net/RoadDef.java b/src/uk/me/parabola/imgfmt/app/net/RoadDef.java
index 4c11037..5b24374 100644
--- a/src/uk/me/parabola/imgfmt/app/net/RoadDef.java
+++ b/src/uk/me/parabola/imgfmt/app/net/RoadDef.java
@@ -396,8 +396,15 @@ public class RoadDef {
 		tabAInfo |= TABA_FLAG_TOLL;
 	}
 
+	public void setUnknownAccess08() {
+		tabAAccess |= 0x08;
+	}
+
+	public void setDestinationOnlyRouting() {
+		tabAAccess |= 0x80;
+	}
+
 	public void setAccess(boolean[] access) {
-		tabAAccess = 0;
 		for (int i = 0; i < 8; i++)
 			if (access[i])
 				tabAAccess |= ACCESS[i];
diff --git a/src/uk/me/parabola/mkgmap/general/MapRoad.java b/src/uk/me/parabola/mkgmap/general/MapRoad.java
index aff44d3..e90a428 100644
--- a/src/uk/me/parabola/mkgmap/general/MapRoad.java
+++ b/src/uk/me/parabola/mkgmap/general/MapRoad.java
@@ -82,6 +82,14 @@ public class MapRoad extends MapLine {
 		this.roadDef.setAccess(access);
 	}
 
+	public void setUnknownAccess08() {
+		this.roadDef.setUnknownAccess08();
+	}
+
+	public void setDestinationOnlyRouting() {
+		this.roadDef.setDestinationOnlyRouting();
+	}
+
 	public void setStartsWithNode(boolean s) {
 		this.roadDef.setStartsWithNode(s);
 	}
diff --git a/src/uk/me/parabola/mkgmap/osmstyle/StyledConverter.java b/src/uk/me/parabola/mkgmap/osmstyle/StyledConverter.java
index f5386ed..678540e 100644
--- a/src/uk/me/parabola/mkgmap/osmstyle/StyledConverter.java
+++ b/src/uk/me/parabola/mkgmap/osmstyle/StyledConverter.java
@@ -413,6 +413,7 @@ public class StyledConverter implements OsmConverter {
 		List<Integer> nodeIndices = new ArrayList<Integer>();
 		List<Coord> points = way.getPoints();
 		Way trailingWay = null;
+		String wayName = way.getName();
 
 		// make sure the way has nodes at each end
 		points.get(0).incHighwayCount();
@@ -441,7 +442,7 @@ public class StyledConverter implements OsmConverter {
 					// this will have truncated
 					// the current Way's points so
 					// the loop will now terminate
-					log.info("Splitting way " + way.getName() + " at " + points.get(i).toDegreeString() + " as it has at least " + MAX_NODES_IN_WAY + " nodes");
+					log.info("Splitting way " + wayName + " at " + points.get(i).toDegreeString() + " as it has at least " + MAX_NODES_IN_WAY + " nodes");
 				}
 			}
 		}
@@ -495,7 +496,7 @@ public class StyledConverter implements OsmConverter {
 					// class is denied access
 					noAccess[index] = true;
 				}
-				log.info(type + " is not allowed in " + highwayType + " " + way.getName());
+				log.info(type + " is not allowed in " + highwayType + " " + wayName);
 			}
 			else if(accessExplicitlyAllowed(accessTagValue)) {
 				if(index == RoadNetwork.NO_MAX) {
@@ -508,13 +509,26 @@ public class StyledConverter implements OsmConverter {
 					// class is allowed access
 					noAccess[index] = false;
 				}
-				log.info(type + " is allowed in " + highwayType + " " + way.getName());
+				log.info(type + " is allowed in " + highwayType + " " + wayName);
+			}
+			else if(accessTagValue.equalsIgnoreCase("destination")) {
+				if(type.equals("motorcar") ||
+				   type.equals("motorcycle")) {
+					road.setDestinationOnlyRouting();
+				}
+				else if(type.equals("access")) {
+					log.warn("access=destination only affects routing for cars in " + highwayType + " " + wayName);
+					road.setDestinationOnlyRouting();
+				}
+				else {
+					log.warn(type + "=destination ignored in " + highwayType + " " + wayName);
+				}
 			}
 			else if(accessTagValue.equalsIgnoreCase("unknown")) {
 				// implicitly allow access
 			}
 			else {
-				log.warn("Ignoring unsupported access tag value " + type + "=" + accessTagValue);
+				log.warn("Ignoring unsupported access tag value " + type + "=" + accessTagValue + " in " + highwayType + " " + wayName);
 			}
 		}
 
@@ -525,7 +539,7 @@ public class StyledConverter implements OsmConverter {
 
 		Way origWay = originalWay.get(way);
 		if(origWay == null)
-		    origWay = way;
+			origWay = way;
 
 		int numNodes = nodeIndices.size();
 		road.setNumNodes(numNodes);
@@ -543,7 +557,7 @@ public class StyledConverter implements OsmConverter {
 				Integer nodeId = nodeIdMap.get(coord);
 				boolean boundary = boundaryCoords.contains(coord);
 				if(boundary) {
-					log.info("Way " + way.getName() + "'s point #" + n + " at " + points.get(n).toDegreeString() + " is a boundary node");
+					log.info("Way " + wayName + "'s point #" + n + " at " + points.get(n).toDegreeString() + " is a boundary node");
 				}
 
 				CoordNode thisCoordNode = new CoordNode(coord.getLatitude(), coord.getLongitude(), nodeId, boundary);
