The distance display in the HUD looks like the value is rounded (“%3.1f”, dist) vice using the floor value {“%3.1f”, ((int)(dist *10))/10.0f)}. As a result, there is a delay in crediting the experience points from the display. Likewise, when I’ve stopped when the distance reported a whole number the final distance was less in TrainingPeaks (for example, stopping at displayed 20.0 miles recorded as 19.96).
What I do to get the proper XP points is wait until the XP points pop up to the right of the HUD shortly after the 1 km distance is achieved.