On Tue, Aug 18, 2015 at 01:22:15PM +1200, Bryan Christianson wrote: > @@ -120,7 +138,14 @@ start_adjust(void) > > UTI_DiffTimevalsToDouble(&elapsed, &T1, &T0); > accrued_error = elapsed * current_freq; > - predicted_error = DRIFT_REMOVAL_INTERVAL / 2.0 * current_freq; > + > + UTI_DiffTimevalsToDouble(&drift_removal_elapsed, &T1, &Tdrift); > + predicted_error = MAX(0.0, (current_drift_removal_interval - > drift_removal_elapsed) / 2.0 * current_freq);
If current_freq was negative, wouldn't predicted_error end up as zero? I think drift_removal_elapsed needs to be clamped before predicted_error is calculated. It shouldn't be negative and it shouldn't be larger than current_drift_removal_interval, to not get an insane error with both backward and forward clock jumps. -- Miroslav Lichvar -- To unsubscribe email [email protected] with "unsubscribe" in the subject. For help email [email protected] with "help" in the subject. Trouble? Email [email protected].
