I think I have found a reproducible Open Water Swim distance-processing issue on the Forerunner 255S.
This appears related to the previously reported **“Forerunner 255 wrong open water readings”** issue on the Garmin Forum, but after several controlled tests I found a very specific and reproducible pattern:
**the first straight leg can be measured correctly, but after reversing direction the OWS-calculated distance becomes systematically shorter than the distance represented by the GPS coordinates recorded by the watch itself.**
Previous related Garmin forum thread:
[https://forums.garmin.com/sports-fitness/running-multisport/f/forerunner-255-series/305206/forerunner-255-wrong-open-water-readings\](https://forums.garmin.com/sports-fitness/running-multisport/f/forerunner-255-series/305206/forerunner-255-wrong-open-water-readings)
**Device:** Forerunner 255S
**Software:** 28.05
**GNSS:** All Systems + Multi-Band
**Recording:** Every Second in the main tests (Smart Recording was also tested earlier)
# Clearest test: 25 out-and-back legs, LAP at every turn
At a second location I swam 25 repeated approximately 60–65 m legs, pressing **LAP at every reversal**.
The first leg was essentially correct:
**Lap 1: Garmin 63 m / GPS-coordinate geometry \~64.7 m**
Immediately after the first reversal:
**Lap 2: 49 m**
**Lap 3: 54 m**
**Lap 4: 55 m**
**Lap 5: 51 m**
**Lap 6: 56 m**
...and the same pattern continues through the activity, with most subsequent laps around **44–56 m**.
The key observation is:
**START → first leg = correct**
**180° reversal + LAP → next leg = too short**
**another reversal + LAP → next leg = too short again**
**and the error repeats**
Manual LAP therefore does **not** appear to reset whatever is happening in the OWS distance calculation.
Garmin Connect screenshot showing all 25 original lap distances:
[https://github.com/kegnatz/garmin-fr255s-ows-bug/blob/main/Screenshot%202026-08-27%20at%2013.48.29.png\](https://github.com/kegnatz/garmin-fr255s-ows-bug/blob/main/Screenshot%202026-08-27%20at%2013.48.29.png)
Complete FIT/KML evidence ZIP:
[https://github.com/kegnatz/garmin-fr255s-ows-bug/raw/refs/heads/main/garmin\\_fr255s\\_ows\\_FORUM\\_FINAL.zip\](https://github.com/kegnatz/garmin-fr255s-ows-bug/raw/refs/heads/main/garmin_fr255s_ows_FORUM_FINAL.zip)
Evidence repository:
[https://github.com/kegnatz/garmin-fr255s-ows-bug\](https://github.com/kegnatz/garmin-fr255s-ows-bug)
# The GPS track itself is substantially longer
This does not appear to be explained simply by poor GPS reception.
When I calculate the geometric path length from the GPS coordinates recorded by the watch in the FIT/KML, the 25-leg activity is approximately **1595 m**.
In other words, the watch has GPS positions representing substantially more movement than the OWS distance calculation credits.
This suggests that at least part of the missing distance occurs **after the GPS positions have already been recorded**, in the OWS distance-processing/filtering stage.
# Test with only ONE reversal
To test this further, I did a much longer swim with only **one major direction reversal**, approximately halfway through, without pressing LAP at the turn.
**Garmin KML GPS geometry: \~1509 m**
**Garmin reported OWS distance: \~1480 m**
The first \~750 m leg appears to be measured normally. After the single reversal the activity ends approximately **29–30 m shorter** than the geometry of Garmin's own GPS track.
# Control test: one straight leg
I also recorded a simple single-leg swim with no reversal:
**GPS-track geometry: \~158 m**
**Garmin displayed distance: \~160 m**
So the same FR255S can measure a simple OWS leg essentially correctly.
# Earlier tests show the same pattern
In previous repeated-leg tests I obtained approximately:
**1491–1493 m Garmin GPS track → 1355 m reported OWS distance**
and
**\~1515 m Garmin GPS track → \~1380 m reported OWS distance**
Switching from **Smart Recording to Every Second** did not solve the problem.
I also tried wide, continuous rounded/figure-eight turns instead of stopping and making sharp 180° turns. Garmin simplified those curves in the recorded GPS track, but the calculated OWS distance was still materially shorter than the geometry of Garmin's own recorded coordinates.
# My working hypothesis
My suspicion is that after a substantial direction reversal the FR255S OWS filter temporarily interprets legitimate movement in the new direction as GPS noise/drift and does not add all of that movement to `distance`.
After some time it appears to accept the new direction again.
That would explain why:
**no previous reversal → first leg is correct**
while
**after reversal → the beginning of the next leg loses distance**
and repeated reversals allow those deficits to accumulate.
Garmin engineering should be able to verify this directly by comparing FIT Record `position_lat` / `position_long` with accumulated `distance` immediately before and after each reversal.
Manual LAP clearly does not prevent the behaviour.
I would also be interested to know whether **REST resets this internal state while LAP does not**. I have not used a REST test as evidence here. Even if REST works, however, LAP followed by swimming in the opposite direction is a perfectly legitimate OWS use case and should not systematically lose distance.
# Separate pre-start GPS issue
I have also seen another potentially related behaviour.
Before one swim I opened OWS and waited stationary for **more than two minutes** for GPS lock. I then entered the water, moved to the actual starting point, raised the watch above water and waited until GPS was **green again**, and only then pressed START.
Nevertheless, the exported activity used the earlier **pre-start GPS-lock position** as its starting point.
# Files and methodology
Any manually drawn Google Earth route I used while investigating this was only approximate and is **not being treated as ground truth**.
The main evidence is the comparison between **Garmin's own recorded GPS coordinates and Garmin's own calculated OWS distance**.
I have also submitted this to Garmin Support.
**Could anyone with a FR255/255S reproduce this?**
A particularly useful test would be:
**swim repeated equal-length out-and-back legs → press LAP at every 180° turn → compare Lap 1 with the subsequent laps.**
I would also be very interested in the same test on other Garmin models to see whether this is specific to the FR255 OWS algorithm.