Index: /applications/editors/josm/plugins/reverter/src/reverter/ChangesetReverter.java
===================================================================
--- /applications/editors/josm/plugins/reverter/src/reverter/ChangesetReverter.java	(revision 29558)
+++ /applications/editors/josm/plugins/reverter/src/reverter/ChangesetReverter.java	(revision 29559)
@@ -423,10 +423,16 @@
                 OsmPrimitive p = ds.getPrimitiveById(id);
                 if (p instanceof Node && p.getVersion() > 1) {
-                    final OsmServerMultiObjectReader rdr = new OsmServerMultiObjectReader();
-                    readObjectVersion(rdr, id, p.getVersion()-1, progressMonitor);
-                    Collection<OsmPrimitive> result = rdr.parseOsm(progressMonitor.createSubTaskMonitor(1, true)).allPrimitives();
-                    if (!result.isEmpty()) {
-                        n.setCoor(((Node)result.iterator().next()).getCoor());
+                    LatLon coor = ((Node)p).getCoor();
+                    if (coor == null) {
+                        final OsmServerMultiObjectReader rdr = new OsmServerMultiObjectReader();
+                        readObjectVersion(rdr, id, p.getVersion()-1, progressMonitor);
+                        Collection<OsmPrimitive> result = rdr.parseOsm(progressMonitor.createSubTaskMonitor(1, true)).allPrimitives();
+                        if (!result.isEmpty()) {
+                            coor = ((Node)result.iterator().next()).getCoor();
+                        }
                     }
+                    if (coor != null) {
+                        n.setCoor(coor);
+                    }
                 }
             }
Index: /applications/editors/josm/plugins/reverter/src/reverter/DataSetCommandMerger.java
===================================================================
--- /applications/editors/josm/plugins/reverter/src/reverter/DataSetCommandMerger.java	(revision 29558)
+++ /applications/editors/josm/plugins/reverter/src/reverter/DataSetCommandMerger.java	(revision 29559)
@@ -41,4 +41,10 @@
         merge();
     }
+    
+    private void addChangeCommandIfNotEquals(OsmPrimitive target, OsmPrimitive newTarget) {
+        if (!target.hasEqualSemanticAttributes(newTarget)) {
+            cmds.add(new ChangeCommand(target,newTarget));
+        }
+    }
 
     private OsmPrimitive getMergeTarget(OsmPrimitive mergeSource) {
@@ -69,5 +75,5 @@
         Node newTarget = new Node(target);
         mergePrimitive(source, target, newTarget);
-        cmds.add(new ChangeCommand(target,newTarget));
+        addChangeCommandIfNotEquals(target,newTarget);
     }
 
@@ -93,5 +99,5 @@
                 Node undeletedTargetNode = new Node(targetNode);
                 undeletedTargetNode.setDeleted(false);
-                cmds.add(new ChangeCommand(targetNode,undeletedTargetNode));
+                addChangeCommandIfNotEquals(targetNode,undeletedTargetNode);
             }
             newNodes.add(targetNode);
@@ -100,5 +106,5 @@
         mergePrimitive(source, target, newTarget);
         newTarget.setNodes(newNodes);
-        cmds.add(new ChangeCommand(target,newTarget));
+        addChangeCommandIfNotEquals(target,newTarget);
     }
 
@@ -128,5 +134,5 @@
                 }
                 undeletedTargetMember.setDeleted(false);
-                cmds.add(new ChangeCommand(targetMember,undeletedTargetMember));
+                addChangeCommandIfNotEquals(targetMember,undeletedTargetMember);
             }
             newMembers.add(new RelationMember(sourceMember.getRole(), targetMember));
@@ -135,6 +141,7 @@
         mergePrimitive(source, target, newRelation);
         newRelation.setMembers(newMembers);
-        cmds.add(new ChangeCommand(target,newRelation));
+        addChangeCommandIfNotEquals(target,newRelation);
     }
+    
     private void merge() {
         for (Node node: sourceDataSet.getNodes()) {
