Index: /trunk/src/org/openstreetmap/josm/data/validation/tests/RightAngleBuildingTest.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/validation/tests/RightAngleBuildingTest.java	(revision 13688)
+++ /trunk/src/org/openstreetmap/josm/data/validation/tests/RightAngleBuildingTest.java	(revision 13689)
@@ -5,4 +5,5 @@
 
 import java.util.Collections;
+import java.util.List;
 
 import org.openstreetmap.josm.actions.OrthogonalizeAction;
@@ -44,7 +45,24 @@
         if (!w.isUsable() || !w.isClosed() || !isBuilding(w)) return;
 
-        for (Pair<Double, Node> pair: w.getAngles()) {
-            if (!checkAngle(w, pair.a, pair.b))
+        List<Pair<Double, Node>> angles = w.getAngles();
+        for (Pair<Double, Node> pair: angles) {
+            if (checkAngle(w, pair.a, pair.b)) {
+                TestError.Builder builder = TestError.builder(this, Severity.WARNING, 3701)
+                                                     .message(tr("Building with an almost square angle"))
+                                                     .primitives(w)
+                                                     .highlight(pair.b);
+                if (angles.stream().noneMatch(p -> Math.abs(p.a - 90) >= maxAngleDelta)) {
+                    builder.fix(() -> {
+                        try {
+                            return OrthogonalizeAction.orthogonalize(Collections.singleton(w));
+                        } catch (InvalidUserInputException e) {
+                            Logging.warn(e);
+                            return null;
+                        }
+                    });
+                }
+                errors.add(builder.build());
                 return;
+            }
         }
     }
@@ -59,23 +77,5 @@
     private boolean checkAngle(Way w, double angle, Node n) {
         double difference = Math.abs(angle - 90);
-
-        if (difference > minAngleDelta && difference < maxAngleDelta) {
-            errors.add(TestError.builder(this, Severity.WARNING, 3701)
-                    .message(tr("Building with an almost square angle"))
-                    .primitives(w)
-                    .highlight(n)
-                    .fix(() -> {
-                        try {
-                            return OrthogonalizeAction.orthogonalize(Collections.singleton(w));
-                        } catch (InvalidUserInputException e) {
-                            Logging.warn(e);
-                            return null;
-                        }
-                    })
-                    .build());
-            return false;
-        }
-
-        return true;
+        return difference > minAngleDelta && difference < maxAngleDelta;
     }
 }
