Index: /applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/actions/SortPTStopsAction.java
===================================================================
--- /applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/actions/SortPTStopsAction.java	(revision 33499)
+++ /applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/actions/SortPTStopsAction.java	(revision 33500)
@@ -142,6 +142,19 @@
         });
 
-        Way prev = null;
-        for (RelationMember wm : wayMembers) {
+        for (int i = 0; i < wayMembers.size(); i++) {
+            RelationMember wm = wayMembers.get(i);
+            Way prev = null;
+            Way next = null;
+            if (i > 0) {
+                RelationMember wmp = wayMembers.get(i-1);
+                if (wmp.getType() == OsmPrimitiveType.WAY)
+                    prev = wmp.getWay();
+            }
+            if (i < wayMembers.size() - 1) {
+                RelationMember wmn = wayMembers.get(i+1);
+                if (wmn.getType() == OsmPrimitiveType.WAY)
+                    next = wmn.getWay();
+            }
+
             if (wm.getType() == OsmPrimitiveType.WAY) {
                 Way curr = wm.getWay();
@@ -149,5 +162,5 @@
                 if (stps != null) {
                     if (stps.size() > 1)
-                        stps = sortSameWayStops(stps, curr, prev);
+                        stps = sortSameWayStops(stps, curr, prev, next);
                     stps.forEach(stop -> {
                         if (stop != null) {
@@ -159,5 +172,4 @@
                     });
                 }
-                prev = curr;
             }
         }
@@ -166,5 +178,5 @@
     }
 
-    private List<PTStop> sortSameWayStops(List<PTStop> stps, Way way, Way prev) {
+    private List<PTStop> sortSameWayStops(List<PTStop> stps, Way way, Way prev, Way next) {
         Map<Node, List<PTStop>> closeNodes = new HashMap<>();
         List<PTStop> noLocationStops = new ArrayList<>();
@@ -182,7 +194,13 @@
         }
 
-        boolean reverse = prev != null &&
-                (prev.firstNode().equals(way.lastNode())
-                        || prev.lastNode().equals(way.lastNode()));
+        boolean reverse = false;
+
+        if (prev != null) {
+            reverse = prev.firstNode().equals(way.lastNode())
+                        || prev.lastNode().equals(way.lastNode());
+        } else if (next != null) {
+            reverse = next.firstNode().equals(way.firstNode())
+                    || next.lastNode().equals(way.firstNode());
+        }
 
         if (reverse)
