Index: trunk/src/org/openstreetmap/josm/corrector/ReverseWayTagCorrector.java
===================================================================
--- trunk/src/org/openstreetmap/josm/corrector/ReverseWayTagCorrector.java	(revision 8179)
+++ trunk/src/org/openstreetmap/josm/corrector/ReverseWayTagCorrector.java	(revision 8180)
@@ -123,4 +123,10 @@
                     newValue = OsmUtils.reverseval;
                 }
+                for (StringSwitcher prefixSuffixSwitcher : stringSwitchers) {
+                    newKey = prefixSuffixSwitcher.apply(key);
+                    if (!key.equals(newKey)) {
+                        break;
+                    }
+                }
             } else if (key.startsWith("incline") || key.endsWith("incline")
                     || key.startsWith("direction") || key.endsWith("direction")) {
@@ -132,5 +138,4 @@
                 // Change key but not left/right value (fix #8518)
                 newKey = FORWARD_BACKWARD.apply(key);
-
             } else if (!ignoreKeyForCorrection(key)) {
                 for (StringSwitcher prefixSuffixSwitcher : stringSwitchers) {
Index: trunk/test/unit/org/openstreetmap/josm/corrector/ReverseWayTagCorrectorTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/corrector/ReverseWayTagCorrectorTest.java	(revision 8179)
+++ trunk/test/unit/org/openstreetmap/josm/corrector/ReverseWayTagCorrectorTest.java	(revision 8180)
@@ -38,4 +38,6 @@
             assertSwitch(new Tag(k, "something"), new Tag(k, "something"));
         }
+        // :left/:right with oneway (see #10977)
+        assertSwitch(new Tag("cycleway:left:oneway", "-1"), new Tag("cycleway:right:oneway", "yes"));
         // :forward/:backward (see #8518)
         assertSwitch(new Tag("turn:forward", "right"), new Tag("turn:backward", "right"));
