anchor.diff:      temNone: NotifyNow;
       temNotifyEveryInterval: begin
         LDuration := TTimeSpan.Subtract(Now, FLastActualNotify);
  -      if LDuration > Interval then
  -        NotifyNow;
  +      if LDuration > FInterval then
  +        NotifyNow
  +      else
  +        FTimer.Interval := ClipValue( Round( Abs ( (FInterval - LDuration).TotalMilliseconds)), 10, High(integer));
       end;
       temNotifyOnEventBurstFinished: begin
         LDuration := TTimeSpan.Subtract(Now, FLastClientNotify);
  -      if LDuration > Interval then
  -        NotifyNow;
  +      if LDuration > FInterval then
  +        NotifyNow
  +      else
  +        FTimer.Interval := ClipValue( Round( Abs ( (FInterval - LDuration).TotalMilliseconds)), 10, High(integer));
       end;
     end;
   end;
  
positive.code: begin
    if ATimeSpan.TotalMilliseconds = 0 then
      raise EArgumentOutOfRangeException.Create('ATimeSpan was 0');
  
    FTimer.Interval := round( abs( ATimeSpan.TotalMilliseconds ) );
  end;
  
  function TThrottledEvent.GetInterval : TTimeSpan;
  begin
   Result := TTimeSpan.FromMilliseconds( FTimer.Interval );
  end;
  
  {%endregion}
  
negative.code: procedure TThrottledEvent.NotifyLater;
  begin
    inc(FSuppressedInvocations);
    if NOT FTimer.Enabled then begin
      FTimer.Interval := ClipValue( Round( Abs( FInterval.TotalMilliseconds ) ), 10, High(integer)) ;
      FTimer.Enabled:=true;
    end;
  end;
  
  procedure TThrottledEvent.OnTimer(Sender: TObject);
  