anchor.diff:  procedure TfpgSpinEdit.ButtonUpClick(Sender: TObject);
   begin
     if FValue + FIncrement <= FMaxValue then
  -    Value := FValue + FIncrement;
  -  DoOnChange;
  +  begin
  +     Value := FValue + FIncrement;
  +    DoOnChange;
  +    EnableButtons;
  +  end
  +  else if not IsMaxLimitReached then
  +  begin
  +    Value := FMaxValue;
  +    DoOnChange;
  +    EnableButtons;
  +  end;
   end;
   
   procedure TfpgSpinEdit.ButtonDownClick(Sender: TObject);
   begin
     if FValue - FIncrement >= FMinValue then
  -    Value := FValue - FIncrement;
  -  DoOnChange;
  +  begin
  +     Value := FValue - FIncrement;
  +    DoOnChange;
  +    EnableButtons;
  +  end
  +  else if not IsMinLimitReached then
  +  begin
  +    Value := FMinValue;
  +    DoOnChange;
  +    EnableButtons;
  +  end;
   end;
   
   procedure TfpgSpinEdit.ButtonUpMouseDown(Sender: TObject; AButton: TMouseButton; AShift: TShiftState; const AMousePos: TPoint);
  
positive.code: 
  procedure TfpgSpinEditFloat.EnableButtons;
  begin
    if FValue + FIncrement < FMaxValue then
      FButtonUp.Enabled := True
    else
    begin
      FUp := False;
      if Assigned(FTimer) then
        FTimer.Enabled := False;
    end;
    if FValue - FIncrement > FMinValue then
      FButtonDown.Enabled := True
    else
    begin
      FDown := False;
      if Assigned(FTimer) then
        FTimer.Enabled := False;
  
negative.code:         Inc(FSteps);
        if FSteps > FSpeedUpSteps then
          FTempIncrement := LargeIncrement;
      end
      else if FValue < FMaxValue then
      begin
        Value := FMaxValue;
        FEdit.Value := FValue;
      end;
      DoOnChange;
      EnableButtons;
    end
    else if FDown then
    begin
  