Index: uk/me/parabola/mkgmap/reader/osm/Element.java
===================================================================
--- uk/me/parabola/mkgmap/reader/osm/Element.java	(revision 3741)
+++ uk/me/parabola/mkgmap/reader/osm/Element.java	(working copy)
@@ -249,6 +249,11 @@
 			tags = other.tags.copy();
 	}
 
+	public void copyIds(Element other) {
+		id = other.id;
+		originalId = other.originalId;
+	}
+
 	public String getName() {
 		return getTag("mkgmap:label:1");
 	}
Index: uk/me/parabola/mkgmap/reader/osm/Node.java
===================================================================
--- uk/me/parabola/mkgmap/reader/osm/Node.java	(revision 3741)
+++ uk/me/parabola/mkgmap/reader/osm/Node.java	(working copy)
@@ -46,6 +46,7 @@
 
 	public Node copy() {
 		Node dup = new Node(getId(), location);
+		dup.copyIds(this);
 		dup.copyTags(this);
 		return dup;
 	}
Index: uk/me/parabola/mkgmap/reader/osm/Way.java
===================================================================
--- uk/me/parabola/mkgmap/reader/osm/Way.java	(revision 3741)
+++ uk/me/parabola/mkgmap/reader/osm/Way.java	(working copy)
@@ -61,6 +61,7 @@
 
 	public Way copy() {
 		Way dup = new Way(getId(), points);
+		dup.copyIds(this);
 		dup.copyTags(this);
 		dup.closedInOSM = this.closedInOSM;
 		dup.complete = this.complete;
