Index: src/uk/me/parabola/imgfmt/app/net/RoadDef.java
===================================================================
--- src/uk/me/parabola/imgfmt/app/net/RoadDef.java	(revision 4593)
+++ src/uk/me/parabola/imgfmt/app/net/RoadDef.java	(working copy)
@@ -36,8 +36,8 @@
 import uk.me.parabola.imgfmt.app.trergn.Polyline;
 import uk.me.parabola.log.Logger;
 import uk.me.parabola.mkgmap.general.CityInfo;
-import uk.me.parabola.mkgmap.general.MapLine;
 import uk.me.parabola.mkgmap.general.ZipCodeInfo;
+import uk.me.parabola.mkgmap.reader.osm.FakeIdGenerator;
 
 /**
  * A road definition.  This ties together all segments of a single road
@@ -186,8 +186,11 @@
 
 	// for diagnostic purposes
 	public String toString() {
+		if (FakeIdGenerator.isFakeId(id))
+			return "(generated way)";
+
 		// assumes id is an OSM id
-		return "(" + "http://www.openstreetmap.org/browse/way/" + id + ")";
+		return "(" + "http://www.openstreetmap.org/way/" + id + ")";
 	}
 
 	public String getName() {
@@ -202,7 +205,6 @@
 		return id;
 	}
 
-
 	/**
 	 * This is for writing to NET1.
 	 * @param writer A writer that is positioned within NET1.
Index: src/uk/me/parabola/mkgmap/osmstyle/NearbyPoiHandler.java
===================================================================
--- src/uk/me/parabola/mkgmap/osmstyle/NearbyPoiHandler.java	(revision 4593)
+++ src/uk/me/parabola/mkgmap/osmstyle/NearbyPoiHandler.java	(working copy)
@@ -401,7 +401,7 @@
 		for (MapPoint mp : biggestCloud) {
 			if (mp != bestPoint) {
 				double dist = mp.getLocation().getDisplayedCoord().distance(bestPoint.getLocation().getDisplayedCoord());
-				log.info(String.format("Removed nearby (<= %d m)", (long) Math.ceil(dist)), getLogInfo(mp));
+				log.info(String.format("Removed", getLogInfo(mp), "nearby (<= %d m)", (long) Math.ceil(dist)), getLogInfo(bestPoint));
 			}
 		}
 	}
Index: src/uk/me/parabola/mkgmap/reader/osm/Element.java
===================================================================
--- src/uk/me/parabola/mkgmap/reader/osm/Element.java	(revision 4593)
+++ src/uk/me/parabola/mkgmap/reader/osm/Element.java	(working copy)
@@ -312,7 +312,7 @@
 	}
 
 	public String toBrowseURL() {
-		return "http://www.openstreetmap.org/" + kind() + "/" + id;
+		return "http://www.openstreetmap.org/" + kind() + "/" + originalId;
 	}
 
 	/**
@@ -332,7 +332,7 @@
 			name = "";
 		else
 			name += " ";
-		return name + "(OSM id " + getId() + ")";
+		return name + "(OSM id " + id + ")";
 	}
 	
 	/**
@@ -346,7 +346,7 @@
 	 */
 	public String getBasicLogInformation() {
 		String className = getClass().getSimpleName();
-		return ("GeneralRelation".equals(className)) ? "Relation" : className 
-				+ (FakeIdGenerator.isFakeId(getId()) ? " generated from " + getOrigElement(): "") + " " +  originalId;
+		return ("GeneralRelation".equals(className) ? "Relation" : className)
+				+ (FakeIdGenerator.isFakeId(id) ? " generated from " + getOrigElement() : "") + " " + originalId;
 	}
 }
Index: src/uk/me/parabola/mkgmap/reader/osm/Way.java
===================================================================
--- src/uk/me/parabola/mkgmap/reader/osm/Way.java	(revision 4593)
+++ src/uk/me/parabola/mkgmap/reader/osm/Way.java	(working copy)
@@ -21,7 +21,6 @@
 import java.util.Collections;
 import java.util.List;
 
-import uk.me.parabola.imgfmt.Utils;
 import uk.me.parabola.imgfmt.app.Coord;
 import uk.me.parabola.log.Logger;
 import uk.me.parabola.mkgmap.filters.ShapeMergeFilter;
@@ -174,17 +173,30 @@
 	 */
 	public String toString() {
 		if (points.isEmpty())
-			return "Way: empty";
+			return "WAY: empty";
 
-		Coord coord = points.get(0);
-		StringBuilder sb = new StringBuilder();
-		sb.append("WAY: ").append(getId()).append(" ");
-		sb.append(getName());
-		sb.append('(');
-		sb.append(Utils.toDegrees(coord.getLatitude()));
-		sb.append('/');
-		sb.append(Utils.toDegrees(coord.getLongitude()));
-		sb.append(')');
+		StringBuilder sb = new StringBuilder("WAY: ");
+		if (FakeIdGenerator.isFakeId(getId()) && !FakeIdGenerator.isFakeId(getOriginalId())) {
+			sb.append("generated from ");
+			sb.append(getOriginalId());
+		} else {
+			sb.append(getId());
+		}
+		if (getName() != null) {
+			sb.append(' ');
+			sb.append(getName());
+		}
+		Coord coord = getFirstPoint();
+		if (hasEqualEndPoints()) {
+			sb.append(" starting and ending at ");
+			sb.append(coord.toDegreeString());
+		}
+		else {
+			sb.append(" starting at ");
+			sb.append(coord.toDegreeString());
+			sb.append(" and ending at ");
+			sb.append(getLastPoint().toDegreeString());
+		}
 		sb.append(' ');
 		sb.append(toTagString());
 		return sb.toString();
