diff --git a/src/main/java/org/opentripplanner/routing/algorithm/mapping/GraphPathToItineraryMapper.java b/src/main/java/org/opentripplanner/routing/algorithm/mapping/GraphPathToItineraryMapper.java index 0ce860a389a..4edb94c2623 100644 --- a/src/main/java/org/opentripplanner/routing/algorithm/mapping/GraphPathToItineraryMapper.java +++ b/src/main/java/org/opentripplanner/routing/algorithm/mapping/GraphPathToItineraryMapper.java @@ -202,13 +202,18 @@ private static State[][] sliceStates(State[] states) { int[] legIndexPairs = {0, states.length - 1}; List legsIndexes = new ArrayList(); + TraverseMode lastMode = null; for (int i = 1; i < states.length - 1; i++) { var backState = states[i]; var forwardState = states[i + 1]; var backMode = backState.getBackMode(); var forwardMode = forwardState.getBackMode(); - var modeChange = backMode != forwardMode && backMode != null && forwardMode != null; + if (backMode != null) { + lastMode = backMode; + } + + var modeChange = lastMode != forwardMode && lastMode != null && forwardMode != null; var parkingChange = backState.isVehicleParked() != forwardState.isVehicleParked(); var rentalChange = isRentalPickUp(backState) || isRentalDropOff(backState);