I think it should always start from what the device has delivered, without modification. If you want to move a lap position, that is your deliberate decission. But just throwing away upstream data without any cause is a huge no-no for me.
One of the key reasons is that you don’t have access to the underlying data, so you can only mess up perfectly good data. For example: in rowing, average force is the average over distance, not over time. But a standard FIT-file does not contain that distance (drive length). So even if you knew you should be using distance instead of time, you can’t calculate it. Nor does a standard FIT-file contain the drive time, so it is an academic discussion regardless.
And this is the case for most summary fields: as downstream consumer you lack the underlying data, so it is pretty hard to reconstruct what you should be summarizing.
And a 500 meter split is a 500.00 meter split. Not 22 meters (i.e. two full strokes!) earlier or later. The stupid thing is, OpenRowingMonitor actually injects records at these exact boundaries (so there is a record for exact 500m), so even when fields are recalculated, it is executed extremely poorly.