Index: /src/org/openstreetmap/josm/data/osm/Segment.java
===================================================================
--- /src/org/openstreetmap/josm/data/osm/Segment.java	(revision 208)
+++ /src/org/openstreetmap/josm/data/osm/Segment.java	(revision 209)
@@ -83,5 +83,5 @@
 			return super.realEqual(osm, semanticOnly); 
 		if (incomplete)
-			return ((Segment)osm).incomplete;
+			return super.realEqual(osm, semanticOnly) && ((Segment)osm).incomplete;
 		return super.realEqual(osm, semanticOnly) && from.equals(((Segment)osm).from) && to.equals(((Segment)osm).to);
 	}
Index: /test/org/openstreetmap/josm/data/osm/visitor/MergeVisitorTest.java
===================================================================
--- /test/org/openstreetmap/josm/data/osm/visitor/MergeVisitorTest.java	(revision 208)
+++ /test/org/openstreetmap/josm/data/osm/visitor/MergeVisitorTest.java	(revision 209)
@@ -337,3 +337,16 @@
 		assertFalse(ds.nodes.iterator().next().modified);
 	}
+	
+	public void testMergeTwoIncompleteWaysMergesSecondAsWell() throws Exception {
+		DataSet ds = new DataSet();
+		Segment s1 = new Segment(23);
+		Segment s2 = new Segment(42);
+		
+		MergeVisitor v = new MergeVisitor(ds);
+		v.visit(s1);
+		v.visit(s2);
+		
+		assertEquals(2, ds.segments.size());
+		assertEquals(23, ds.segments.iterator().next().id);
+	}
 }
