Index: trunk/test/unit/org/openstreetmap/josm/corrector/ReverseWayTagCorrectorTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/corrector/ReverseWayTagCorrectorTest.java	(revision 11061)
+++ trunk/test/unit/org/openstreetmap/josm/corrector/ReverseWayTagCorrectorTest.java	(revision 11069)
@@ -53,8 +53,4 @@
         assertSwitch(new Tag("direction", "backward"), new Tag("direction", "forward"));
         assertSwitch(new Tag("direction", "north"), new Tag("direction", "south"));
-        assertSwitch(new Tag("direction", "NNE"), new Tag("direction", "SSW"));
-        assertSwitch(new Tag("direction", "270"), new Tag("direction", "90"));
-        assertSwitch(new Tag("direction", "135"), new Tag("direction", "315"));
-        assertSwitch(new Tag("direction", "337"), new Tag("direction", "157"));
         // :left/:right with oneway (see #10977)
         assertSwitch(new Tag("cycleway:left:oneway", "-1"), new Tag("cycleway:right:oneway", "yes"));
@@ -118,4 +114,13 @@
     }
 
+    private Map<OsmPrimitive, List<TagCorrection>> getTagCorrectionsForWay(String middleNodeTags) {
+        final OsmPrimitive n1 = OsmUtils.createPrimitive("node");
+        final OsmPrimitive n2 = OsmUtils.createPrimitive("node " + middleNodeTags);
+        final OsmPrimitive n3 = OsmUtils.createPrimitive("node");
+        final Way w = new Way();
+        Stream.of(n1, n2, n3).map(Node.class::cast).forEach(w::addNode);
+        return ReverseWayTagCorrector.getTagCorrectionsMap(w);
+    }
+
     /**
      * Test tag correction on way nodes
@@ -123,15 +128,17 @@
     @Test
     public void testSwitchingWayNodes() {
-        final OsmPrimitive n1 = OsmUtils.createPrimitive("node");
-        final OsmPrimitive n2 = OsmUtils.createPrimitive("node direction=SSW");
-        final OsmPrimitive n3 = OsmUtils.createPrimitive("node");
-        final Way w = new Way();
-        Stream.of(n1, n2, n3).map(Node.class::cast).forEach(w::addNode);
-        final Map<OsmPrimitive, List<TagCorrection>> tagCorrections = ReverseWayTagCorrector.getTagCorrectionsMap(w);
+        final Map<OsmPrimitive, List<TagCorrection>> tagCorrections = getTagCorrectionsForWay("direction=forward");
         Assert.assertEquals(1, tagCorrections.size());
-        Assert.assertEquals(Collections.singleton(n2),
-                tagCorrections.keySet());
-        Assert.assertEquals(Collections.singletonList(new TagCorrection("direction", "SSW", "direction", "NNE")),
+        Assert.assertEquals(Collections.singletonList(new TagCorrection("direction", "forward", "direction", "backward")),
                 tagCorrections.values().iterator().next());
     }
+
+    /**
+     * Test tag correction on way nodes are not applied for absolute values such as compass cardinal directions
+     */
+    @Test
+    public void testNotSwitchingWayNodes() {
+        Assert.assertEquals(0, getTagCorrectionsForWay("direction=SSW").size());
+        Assert.assertEquals(0, getTagCorrectionsForWay("direction=145").size());
+    }
 }
