anchor.diff:  
   procedure TfpgSpinEditFloat.ButtonUpMouseUp(Sender: TObject; AButton: TMouseButton; AShift: TShiftState; const AMousePos: TPoint);
   begin
  -  FUp := False;
  -  if Assigned(FTimer) then
  -    FTimer.Enabled := False;
  +  DisableTimer;
   end;
   
   procedure TfpgSpinEditFloat.ButtonDownMouseDown(Sender: TObject; AButton: TMouseButton; AShift: TShiftState; const AMousePos: TPoint);
  
positive.code:   begin
      if FValue + FTempIncrement <= FMaxValue then
      begin
        Value       := FValue + FTempIncrement;
        FEdit.Value := FValue;
        if FSteps <= FSpeedUpSteps then
          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
      if FValue - FTempIncrement >= FMinValue then
      begin
        Value      := FValue - FTempIncrement;
        FEdit.Value := FValue;
        if FSteps <= FSpeedUpSteps then
          Inc(FSteps);
        if FSteps > FSpeedUpSteps then
          FTempIncrement := LargeIncrement;
      end
      else if FValue > FMinValue then
      begin
        Value := FMinValue;
        FEdit.Value := FValue;
      end;
      DoOnChange;
      EnableButtons;
    end;
  end;
  
  
negative.code: 
  procedure TfpgSpinEditFloat.EnableButtons;
  begin
    FButtonUp.Enabled := True;
    FButtonDown.Enabled := True;
    if IsMaxLimitReached then
      FButtonUp.Enabled := False
    else
      if IsMinLimitReached then
        FButtonDown.Enabled := False;
  end;
  
  function TfpgSpinEditFloat.IsMinLimitReached: Boolean;
  begin
    Result := FValue = FMinValue;
  end;
  
  function TfpgSpinEditFloat.IsMaxLimitReached: Boolean;
  begin
    Result := FValue = FMaxValue;
  end;
  
  function TfpgSpinEditFloat.GetEditBackgroundColor: TfpgColor;
  