Index: /applications/editors/josm/plugins/FIT/src/main/java/org/openstreetmap/josm/plugins/fit/lib/global/HeartRateCadenceDistanceSpeed.java
===================================================================
--- /applications/editors/josm/plugins/FIT/src/main/java/org/openstreetmap/josm/plugins/fit/lib/global/HeartRateCadenceDistanceSpeed.java	(revision 36246)
+++ /applications/editors/josm/plugins/FIT/src/main/java/org/openstreetmap/josm/plugins/fit/lib/global/HeartRateCadenceDistanceSpeed.java	(revision 36247)
@@ -60,5 +60,6 @@
                 case 0 -> lat = decodeDegrees(NumberUtils.decodeLong(size, littleEndian, inputStream));
                 case 1 -> lon = decodeDegrees(NumberUtils.decodeLong(size, littleEndian, inputStream));
-                case 2 -> ele = decodeElevation(NumberUtils.decodeLong(size, littleEndian, inputStream));
+                // 2 is documented ele, 78 also seems to be ele (GJ @ 1416m, record 78 in GJ test data decodes to ~1400)
+                case 2, 78 -> ele = decodeElevation(NumberUtils.decodeLong(size, littleEndian, inputStream));
                 case 3 -> heartRate = NumberUtils.decodeShort(size, littleEndian, inputStream);
                 case 4 -> cadence = NumberUtils.decodeShort(size, littleEndian, inputStream);
Index: /applications/editors/josm/plugins/FIT/src/test/unit/org/openstreetmap/josm/plugins/fit/lib/FitReaderTest.java
===================================================================
--- /applications/editors/josm/plugins/FIT/src/test/unit/org/openstreetmap/josm/plugins/fit/lib/FitReaderTest.java	(revision 36246)
+++ /applications/editors/josm/plugins/FIT/src/test/unit/org/openstreetmap/josm/plugins/fit/lib/FitReaderTest.java	(revision 36247)
@@ -11,11 +11,15 @@
 import java.io.IOException;
 import java.math.BigInteger;
+import java.util.Arrays;
 import java.util.Collections;
 
 import org.junit.jupiter.api.Test;
+import org.openstreetmap.josm.TestUtils;
+import org.openstreetmap.josm.data.coor.ILatLon;
+import org.openstreetmap.josm.plugins.fit.lib.global.FitData;
 import org.openstreetmap.josm.plugins.fit.lib.global.FitDevDataRecord;
-import org.openstreetmap.josm.plugins.fit.lib.global.Global;
 import org.openstreetmap.josm.plugins.fit.lib.global.FitDeveloperDataIdMessage;
 import org.openstreetmap.josm.plugins.fit.lib.global.FitDevice;
+import org.openstreetmap.josm.plugins.fit.lib.global.Global;
 import org.openstreetmap.josm.plugins.fit.lib.global.HeartRateCadenceDistanceSpeed;
 import org.openstreetmap.josm.plugins.fit.lib.records.FitDevIntData;
@@ -171,3 +175,22 @@
                 () -> assertEquals(new HeartRateCadenceDistanceSpeed(144, 92, 3710, 3050, doughnuts), fitData[4]));
     }
+
+    @Test
+    void testNonRegression23613() throws IOException {
+        final FitData[] fitData;
+        try (final var inputStream = TestUtils.getRegressionDataStream(23613, "2023-10-30-05-04-50.fit")) {
+            fitData = FitReader.read(inputStream);
+        }
+        final var heartRateCadenceDistanceSpeed = Arrays.stream(fitData).filter(HeartRateCadenceDistanceSpeed.class::isInstance)
+                .map(HeartRateCadenceDistanceSpeed.class::cast).toArray(HeartRateCadenceDistanceSpeed[]::new);
+        assertEquals(160, heartRateCadenceDistanceSpeed.length);
+        assertEquals(157, Arrays.stream(heartRateCadenceDistanceSpeed)
+                .filter(r -> !Double.isNaN(r.lat()) && !Double.isNaN(r.lon())).count());
+        assertEquals(39.0662439, heartRateCadenceDistanceSpeed[2].lat(), ILatLon.MAX_SERVER_PRECISION);
+        assertEquals(-108.5501406, heartRateCadenceDistanceSpeed[2].lon(), ILatLon.MAX_SERVER_PRECISION);
+        assertEquals(39.0674976, heartRateCadenceDistanceSpeed[heartRateCadenceDistanceSpeed.length - 2].lat(),
+                ILatLon.MAX_SERVER_PRECISION);
+        assertEquals(-108.5603802, heartRateCadenceDistanceSpeed[heartRateCadenceDistanceSpeed.length - 2].lon(),
+                ILatLon.MAX_SERVER_PRECISION);
+    }
 }
