anchor.diff:  
       property OneBucketWidth: Integer read FOneBucketWidth write SetOneBucketWidth default 30;
       property CurrentDate: TDateTime read FCurrentDate write SetCurrentDate;
  +    property MinDate : TDateTime read FMinDate write SetMinDate;
  +    property MaxDate : TDateTime read FMaxDate write SetMaxDate;
       property OnDrawTimeline: TOnDrawTimelineEvent read FOnDrawTimeline write FOnDrawTimeline;
       property OnDrawBucket: TOnDrawTimelineBucketEvent read FOnDrawBucket write FOnDrawBucket;
       property ResizingBuckets: boolean read FResizingBuckets;
  
positive.code:   if Assigned(FMainTimelineRef) then
    begin
      SystemParametersInfo(SPI_GETWHEELSCROLLLINES, 0, @ScrollLines, 0);
      ScrollCount := -ScrollLines * Message.WheelDelta div {$ifdef fpc}Message.WheelDelta{$else}WHEEL_DELTA{$endif};
      CurrentDate := FMainTimelineRef.Scale.AddTicks(Self.CurrentDate, ScrollCount);
    end;
  end;
  
negative.code: procedure TmTimeruler.SetCurrentDate(Value: TDateTime);
  var
    Saved: TDateTime;
    newValue : TDateTime;
  begin
    newValue := FMainTimelineRef.Scale.TruncDate(Value);
    if newValue > FMaxDate then
      newValue := FMaxDate
    else if newValue < FMinDate then
      newValue := FMinDate;
    if FCurrentDate <> newValue then
    begin
      Saved := newValue;
  
      if Assigned(FOnBeforeDateChange) then
        FOnBeforeDateChange(Self, newValue);
  
      if Saved <> newValue then
      begin
        newValue := FMainTimelineRef.Scale.TruncDate(newValue);
        if FCurrentDate = newValue then
          Exit;
      end;
      Saved := FCurrentDate;
      FCurrentDate := newValue;
      Invalidate;
      NotifySubscribers(trCurrentDateChanged, FCurrentDate); //Saved);
  
      if Assigned(FOnDateChanged) then
        FOnDateChanged(Self);
  