Index: src/org/openstreetmap/josm/actions/ReverseWayAction.java
===================================================================
--- src/org/openstreetmap/josm/actions/ReverseWayAction.java	(revision 1612)
+++ src/org/openstreetmap/josm/actions/ReverseWayAction.java	(working copy)
@@ -66,7 +66,7 @@
             if (Main.pref.getBoolean("tag-correction.reverse-way", true)) {
                 try
                 {
-                    final Collection<Command> changePropertyCommands = reverseWayTagCorrector.execute(wnew);
+                    final Collection<Command> changePropertyCommands = reverseWayTagCorrector.execute(w, wnew);
                     propertiesUpdated = propertiesUpdated
                         || (changePropertyCommands != null && !changePropertyCommands.isEmpty());
                     c.addAll(changePropertyCommands);
Index: src/org/openstreetmap/josm/corrector/ReverseWayTagCorrector.java
===================================================================
--- src/org/openstreetmap/josm/corrector/ReverseWayTagCorrector.java	(revision 1612)
+++ src/org/openstreetmap/josm/corrector/ReverseWayTagCorrector.java	(working copy)
@@ -34,7 +34,7 @@
             this.a = a;
             this.b = b;
             startPattern = Pattern.compile(
-                    "^(" + a + "|" + b + ")" + SEPARATOR,
+                    "^(" + a + "|" + b + ")(" + SEPARATOR + "|$)",
                     Pattern.CASE_INSENSITIVE);
             endPattern = Pattern.compile(
                     SEPARATOR + "(" + a + "|" + b + ")$",
@@ -67,7 +67,7 @@
             };
 
     @Override
-    public Collection<Command> execute(Way way) throws UserCancelException {
+    public Collection<Command> execute(Way oldway, Way way) throws UserCancelException {
         Map<OsmPrimitive, List<TagCorrection>> tagCorrectionsMap =
                 new HashMap<OsmPrimitive, List<TagCorrection>>();
 
@@ -112,7 +112,7 @@
 
         for (Relation relation : Main.ds.relations) {
             for (RelationMember member : relation.members) {
-                if (!member.member.realEqual(way, true)
+                if (!member.member.realEqual(oldway, true)
                         || member.role.length() == 0)
                     continue;
 
Index: src/org/openstreetmap/josm/corrector/TagCorrector.java
===================================================================
--- src/org/openstreetmap/josm/corrector/TagCorrector.java	(revision 1612)
+++ src/org/openstreetmap/josm/corrector/TagCorrector.java	(working copy)
@@ -32,7 +32,7 @@
 
 public abstract class TagCorrector<P extends OsmPrimitive> {
 
-    public abstract Collection<Command> execute(P primitive)
+    public abstract Collection<Command> execute(P primitive, P oldprimitive)
         throws UserCancelException;
 
     private String[] applicationOptions = new String[] {
