diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TrackedRaceImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TrackedRaceImpl.java index 935e6d2d9db..b40044f708a 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TrackedRaceImpl.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TrackedRaceImpl.java @@ -305,9 +305,27 @@ public abstract class TrackedRaceImpl implements TrackedRace, CourseListener { NavigableSet roundings = markPassingsForCompetitor.get(competitor); MarkPassing lastBeforeOrAt = roundings.floor(new DummyMarkPassingWithTimePointOnly(at)); TrackedLegOfCompetitor result = null; + TrackedLeg trackedLeg; // already finished the race? - if (lastBeforeOrAt != null && getRace().getCourse().getLastWaypoint() != lastBeforeOrAt.getWaypoint()) { - TrackedLeg trackedLeg = getTrackedLegStartingAt(lastBeforeOrAt.getWaypoint()); + if (lastBeforeOrAt != null) { + // and not at or after last mark passing + if (getRace().getCourse().getLastWaypoint() != lastBeforeOrAt.getWaypoint()) { + trackedLeg = getTrackedLegStartingAt(lastBeforeOrAt.getWaypoint()); + } else { + // exactly *at* last mark passing? + if (at.equals(roundings.last().getTimePoint())) { + // exactly at finish line; return last leg + trackedLeg = getTrackedLegFinishingAt(lastBeforeOrAt.getWaypoint()); + } else { + // no, then we're after the last mark passing + trackedLeg = null; + } + } + } else { + // before beginning of race + trackedLeg = null; + } + if (trackedLeg != null) { result = trackedLeg.getTrackedLeg(competitor); } return result;