Index: trunk/src/org/openstreetmap/josm/tools/RightAndLefthandTraffic.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/RightAndLefthandTraffic.java	(revision 11255)
+++ trunk/src/org/openstreetmap/josm/tools/RightAndLefthandTraffic.java	(revision 11256)
@@ -42,4 +42,8 @@
 public final class RightAndLefthandTraffic {
 
+    private static final String DRIVING_SIDE = "driving_side";
+    private static final String LEFT = "left";
+    private static final String RIGHT = "right";
+
     private static class RLTrafficGeoProperty implements GeoProperty<Boolean> {
 
@@ -109,12 +113,12 @@
         Collection<Way> allWays = data.getWays();
         for (Way w : allWays) {
-            if ("left".equals(w.get("driving_side"))) {
+            if (LEFT.equals(w.get(DRIVING_SIDE))) {
                 addWayIfNotInner(ways, w);
             }
         }
         for (Relation r : allRelations) {
-            if (r.isMultipolygon() && "left".equals(r.get("driving_side"))) {
+            if (r.isMultipolygon() && LEFT.equals(r.get(DRIVING_SIDE))) {
                 for (RelationMember rm : r.getMembers()) {
-                    if (rm.isWay() && "outer".equals(rm.getRole())) {
+                    if (rm.isWay() && "outer".equals(rm.getRole()) && !RIGHT.equals(rm.getMember().get(DRIVING_SIDE))) {
                         addWayIfNotInner(ways, (Way) rm.getMember());
                     }
@@ -167,5 +171,5 @@
         Set<Way> s = Collections.singleton(w);
         for (Relation r : OsmPrimitive.getParentRelations(s)) {
-            if (r.isMultipolygon() && "left".equals(r.get("driving_side")) &&
+            if (r.isMultipolygon() && LEFT.equals(r.get(DRIVING_SIDE)) &&
                 "inner".equals(r.getMembersFor(s).iterator().next().getRole())) {
                 if (Main.isDebugEnabled()) {
