Index: trunk/src/org/openstreetmap/josm/data/osm/visitor/MapPaintVisitor.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/visitor/MapPaintVisitor.java	(revision 2086)
+++ trunk/src/org/openstreetmap/josm/data/osm/visitor/MapPaintVisitor.java	(revision 2087)
@@ -31,4 +31,5 @@
 import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.data.osm.OsmUtils;
 import org.openstreetmap.josm.data.osm.Relation;
 import org.openstreetmap.josm.data.osm.RelationMember;
@@ -666,8 +667,23 @@
             Node firstNode = viaWay.firstNode();
             Node lastNode = viaWay.lastNode();
+            Boolean onewayvia = false;
+
+            String onewayviastr = viaWay.get("oneway");
+            if(onewayviastr != null)
+            {
+                if("-1".equals(onewayviastr)) {
+                    onewayvia = true;
+                    Node t = firstNode;
+                    firstNode = lastNode;
+                    lastNode = firstNode;
+                }
+                else
+                    onewayvia = OsmUtils.getOsmBoolean(onewayviastr);
+            }
+
             if(fromWay.isFirstLastNode(firstNode)) {
                 viaNode = firstNode;
-            } else if(fromWay.isFirstLastNode(lastNode)) {
-                viaNode = firstNode;
+            } else if (!onewayvia && fromWay.isFirstLastNode(lastNode)) {
+                viaNode = lastNode;
             } else {
                 r.putError(tr("The \"from\" way doesn't start or end at the \"via\" way."), true);
