Index: applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/validation/SegmentChecker.java
===================================================================
--- applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/validation/SegmentChecker.java	(revision 32805)
+++ applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/validation/SegmentChecker.java	(revision 32806)
@@ -26,4 +26,7 @@
 import org.openstreetmap.josm.data.validation.TestError;
 import org.openstreetmap.josm.gui.Notification;
+import org.openstreetmap.josm.gui.dialogs.relation.GenericRelationEditor;
+import org.openstreetmap.josm.gui.dialogs.relation.RelationEditor;
+import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.plugins.pt_assistant.data.PTRouteDataManager;
 import org.openstreetmap.josm.plugins.pt_assistant.data.PTRouteSegment;
@@ -565,5 +568,5 @@
 
 		/*-
-		 * When is an error fixable?
+		 * When is an error fixable (outdated)?
 		 * - if there is a correct segment
 		 * - if it can be fixed by sorting
@@ -584,6 +587,4 @@
 		PTRouteSegment wrongSegment = wrongSegments.get(testError);
 		PTRouteSegment correctSegment = null;
-		// TODO: now just the first correctSegment is taken over. Change
-		// that the segment is selected.
 		for (PTRouteSegment segment : correctSegments) {
 			if (wrongSegment.getFirstStop().equalsStop(segment.getFirstStop())
@@ -606,8 +607,49 @@
 	}
 
+	/**
+	 * Finds fixes using sorting and removal. Modifies the messages in the test
+	 * error according to the availability of automatic fixes.
+	 */
 	protected void findFixes() {
+
 		for (TestError error : wrongSegments.keySet()) {
+			// look for fixes using sorting and removing:
 			findFix(error);
-		}
+
+			// change the error code based on the availability of fixes:
+			PTRouteSegment wrongSegment = wrongSegments.get(error);
+			List<PTRouteSegment> correctSegmentsForThisError = new ArrayList<>();
+			for (PTRouteSegment segment : correctSegments) {
+				if (wrongSegment.getFirstWay().getId() == segment.getFirstWay().getId()
+						&& wrongSegment.getLastWay().getId() == segment.getLastWay().getId()) {
+					correctSegmentsForThisError.add(segment);
+				}
+			}
+
+			int numberOfFixes = correctSegmentsForThisError.size();
+
+			if (numberOfFixes == 0) {
+				numberOfFixes = wrongSegment.getFixVariants().size();
+			}
+			if (numberOfFixes == 0) {
+				for (PTRouteSegment segment : correctSegments) {
+					if (wrongSegment.getFirstStop().equalsStop(segment.getFirstStop())
+							&& wrongSegment.getLastStop().equalsStop(segment.getLastStop())) {
+						correctSegmentsForThisError.add(segment);
+					}
+				}
+				numberOfFixes = correctSegmentsForThisError.size();
+			}
+
+			// change the error code:
+			if (numberOfFixes == 0) {
+				error.setMessage(tr("PT: Problem in the route segment with no automatic fix"));
+			} else if (numberOfFixes == 1) {
+				error.setMessage(tr("PT: Problem in the route segment with one automatic fix"));
+			} else {
+				error.setMessage("PT: Problem in the route segment with several automatic fixes");
+			}
+		}
+
 	}
 
@@ -627,5 +669,4 @@
 		Node previousNode = findFirstNodeOfRouteSegmentInDirectionOfTravel(startPTWay);
 		if (previousNode == null) {
-			// TODO: sort route ways
 			return;
 		}
@@ -697,5 +738,5 @@
 		// layer, clear them:
 		((PTAssistantValidatorTest) testError.getTester()).clearFixVariants();
-		
+
 		PTRouteSegment wrongSegment = wrongSegments.get(testError);
 
@@ -709,5 +750,6 @@
 		}
 
-		// if no correct segment found, apply less strict criteria to look for one:
+		// if no correct segment found, apply less strict criteria to look for
+		// one:
 		if (correctSegmentsForThisError.isEmpty() && wrongSegment.getFixVariants().isEmpty()) {
 			for (PTRouteSegment segment : correctSegments) {
@@ -863,4 +905,5 @@
 	 */
 	private static void carryOutSelectedFix(TestError testError, List<PTWay> fix) {
+		// modify the route:
 		Relation route = (Relation) testError.getPrimitives().iterator().next();
 		route.setMembers(getModifiedRelationMembers(testError, fix));
@@ -869,4 +912,28 @@
 		wrongSegment.setPTWays(fix);
 		addCorrectSegment(wrongSegment);
+
+		// get ways for the fix:
+		List<Way> primitives = new ArrayList<>();
+		for (PTWay ptway : fix) {
+			primitives.addAll(ptway.getWays());
+		}
+
+		// get layer:
+		OsmDataLayer layer = null;
+		List<OsmDataLayer> listOfLayers = Main.getLayerManager().getLayersOfType(OsmDataLayer.class);
+		for (OsmDataLayer osmDataLayer : listOfLayers) {
+			if (osmDataLayer.data == route.getDataSet()) {
+				layer = osmDataLayer;
+				break;
+			}
+		}
+
+		// create editor:
+		GenericRelationEditor editor = (GenericRelationEditor) RelationEditor.getEditor(layer, route,
+				route.getMembersFor(primitives));
+
+		// open editor:
+		editor.setVisible(true);
+
 	}
 
