Index: /applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/validation/PTAssistantValidatorTest.java
===================================================================
--- /applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/validation/PTAssistantValidatorTest.java	(revision 33404)
+++ /applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/validation/PTAssistantValidatorTest.java	(revision 33405)
@@ -45,4 +45,5 @@
 
 	public static final int ERROR_CODE_SORTING = 3711;
+	public static final int ERROR_CODE_PARTIAL_SORTING = 3712;
 	public static final int ERROR_CODE_ROAD_TYPE = 3721;
 	public static final int ERROR_CODE_CONSTRUCTION = 3722;
@@ -390,5 +391,6 @@
 		boolean sortingErrorFound = false;
 		for (TestError error : this.errors) {
-			if (error.getCode() == ERROR_CODE_SORTING) {
+			if (error.getCode() == ERROR_CODE_SORTING
+					|| error.getCode() == ERROR_CODE_PARTIAL_SORTING) {
 				sortingErrorFound = true;
 				break;
@@ -469,4 +471,5 @@
 				|| testError.getCode() == ERROR_CODE_CONSTRUCTION
 				|| testError.getCode() == ERROR_CODE_SORTING
+				|| testError.getCode() == ERROR_CODE_PARTIAL_SORTING
 				|| testError.getCode() == ERROR_CODE_END_STOP
 				|| testError.getCode() == ERROR_CODE_PLATFORM_PART_OF_HIGHWAY) {
@@ -505,5 +508,6 @@
 		}
 
-		if (testError.getCode() == ERROR_CODE_SORTING) {
+		if (testError.getCode() == ERROR_CODE_SORTING
+				|| testError.getCode() == ERROR_CODE_PARTIAL_SORTING) {
 			commands.add(RouteChecker.fixSortingError(testError));
 		}
Index: /applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/validation/RouteChecker.java
===================================================================
--- /applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/validation/RouteChecker.java	(revision 33404)
+++ /applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/validation/RouteChecker.java	(revision 33405)
@@ -43,5 +43,5 @@
     }
 
-    protected void performSortingTest() {
+   protected void performSortingTest() {
 
         final List<RelationMember> waysToCheck = new ArrayList<>();
@@ -57,5 +57,7 @@
         }
 
-        if (hasGap(waysToCheck)) {
+        int numOfGaps = countGaps(waysToCheck);
+
+        if (numOfGaps > 0) {
 
             this.hasGap = true;
@@ -64,5 +66,7 @@
             sortedMembers = sorter.sortMembers(waysToCheck);
 
-            if (!hasGap(sortedMembers)) {
+            int numOfGapsAfterSort = countGaps(sortedMembers);
+
+            if (numOfGapsAfterSort == 0) {
                 Builder builder = TestError.builder(this.test, Severity.WARNING, PTAssistantValidatorTest.ERROR_CODE_SORTING);
                 builder.message(tr("PT: Route contains a gap that can be fixed by sorting"));
@@ -70,13 +74,16 @@
                 TestError e = builder.build();
                 this.errors.add(e);
-
+            } else if(numOfGapsAfterSort < numOfGaps) {
+                Builder builder = TestError.builder(this.test, Severity.WARNING, PTAssistantValidatorTest.ERROR_CODE_PARTIAL_SORTING);
+                builder.message(tr("PT: Route gaps can decrease by sorting members. Further validations will be required"));
+                builder.primitives(relation);
+                TestError e = builder.build();
+                this.errors.add(e);
             }
-
         }
-
     }
 
     /**
-     * Checks if there is a gap for a given list of ways. It does not check if
+     * Counts how many gaps there are for a given list of ways. It does not check if
      * the way actually stands for a public transport platform - that should be
      * checked beforehand.
@@ -86,18 +93,19 @@
      *         Relation Editor), false otherwise
      */
-    private boolean hasGap(List<RelationMember> waysToCheck) {
-        WayConnectionTypeCalculator connectionTypeCalculator = new WayConnectionTypeCalculator();
+    private int countGaps(List<RelationMember> waysToCheck) {
+    	int numberOfGaps = 0;
+
+    	WayConnectionTypeCalculator connectionTypeCalculator = new WayConnectionTypeCalculator();
         final List<WayConnectionType> links = connectionTypeCalculator.updateLinks(waysToCheck);
         for (int i = 0; i < links.size(); i++) {
             final WayConnectionType link = links.get(i);
-            final boolean hasError = !(i == 0 || link.linkPrev) || !(i == links.size() - 1 || link.linkNext)
-                    || link.direction == null || WayConnectionType.Direction.NONE.equals(link.direction);
-            if (hasError) {
-                return true;
-
+            if(!(i == 0 || link.linkPrev) || !(i == links.size() - 1 || link.linkNext)
+                    || link.direction == null || WayConnectionType.Direction.NONE.equals(link.direction)) {
+            	numberOfGaps++;
+            	i++;
             }
         }
 
-        return false;
+        return numberOfGaps;
     }
 
@@ -115,5 +123,6 @@
 
     protected static Command fixSortingError(TestError testError) {
-        if (testError.getCode() != PTAssistantValidatorTest.ERROR_CODE_SORTING) {
+        if (testError.getCode() != PTAssistantValidatorTest.ERROR_CODE_SORTING
+        		&& testError.getCode() != PTAssistantValidatorTest.ERROR_CODE_PARTIAL_SORTING) {
             return null;
         }
@@ -129,5 +138,5 @@
         for (RelationMember member : members) {
             if (RouteUtils.isPTWay(member)) {
-                if (member.getRole().equals("")) {
+                if ("".equals(member.getRole())) {
                     ways.add(member);
                 } else {
@@ -135,7 +144,6 @@
                     ways.add(modifiedMember);
                 }
-
             } else { // stops:
-                if (member.getRole().equals("stop_positon")) {
+                if ("stop_positon".equals(member.getRole())) {
                     // it is not expected that stop_positions could
                     // be relations
@@ -150,5 +158,4 @@
                     stops.add(member);
                 }
-
             }
         }
@@ -169,9 +176,5 @@
         sortedRelation.setMembers(sortedRelationMembers);
 
-        ChangeCommand changeCommand = new ChangeCommand(originalRelation, sortedRelation);
-
-        return changeCommand;
-
+        return new ChangeCommand(originalRelation, sortedRelation);
     }
-
 }
