anchor.diff:  
   procedure TDTCalendarForm.CloseCalendarForm(const AndSetTheDate: Boolean);
   begin
  -  if not FClosing then begin
  -    SetClosingCalendarForm;
  -
  -    if Assigned(DTPicker) and DTPicker.IsVisible then begin
  -
  -      if AndSetTheDate then begin
  -        Inc(DTPicker.FUserChanging);
  -        try
  -          if DTPicker.DateIsNull then begin
  -            // we'll set the time to 0.0 (midnight):
  -            DTPicker.SetDateTime(Int(Cal.DateTime));
  -          end else if not EqualDateTime(Int(DTPicker.DateTime),
  -                                        Int(Cal.DateTime)) then begin
  -            // we'll change the date, but keep the time:
  -            DTPicker.SetDateTime(ComposeDateTime(Cal.DateTime, DTPicker.DateTime));
  +  if not FClosing then
  +    try
  +      SetClosingCalendarForm;
  +      Visible := False;
  +
  +      if Assigned(DTPicker) and DTPicker.IsVisible then begin
  +
  +        if AndSetTheDate then begin
  +          Inc(DTPicker.FUserChanging);
  +          try
  +            if DTPicker.DateIsNull then begin
  +              // we'll set the time to 0.0 (midnight):
  +              DTPicker.SetDateTime(Int(Cal.DateTime));
  +            end else if not EqualDateTime(Int(DTPicker.DateTime),
  +                                          Int(Cal.DateTime)) then begin
  +              // we'll change the date, but keep the time:
  +              DTPicker.SetDateTime(ComposeDateTime(Cal.DateTime, DTPicker.DateTime));
  +            end;
  +          finally
  +            Dec(DTPicker.FUserChanging);
             end;
  -        finally
  -          Dec(DTPicker.FUserChanging);
           end;
  +
  +        if Screen.ActiveCustomForm = Self then
  +          DTPicker.SetFocusIfPossible;
  +
  +        DTPicker.DoCloseUp;
         end;
   
  -      if Screen.ActiveCustomForm = Self then
  -        DTPicker.SetFocusIfPossible;
  -
  -      Visible := False;
  -
  -      Close;
  -      DTPicker.DoCloseUp;
  -
  -    end else
  -      Close;
  -
  -  end;
  +    finally
  +      Release;
  +    end;
   
   end;
   
  
positive.code: end;
  
  procedure TCustomZVDateTimePicker.UpdateDate;
  var
    W: Array[1..3] of Word;
    WT: Array[TTimeTextPart] of Word;
    YearPos, I: Integer;
    TTP, TTPEnd: TTimeTextPart;
  begin
    FUserChangedText := False;
  
  
negative.code:   end else
      for I := Low(FTextPart) to High(FTextPart) do
        FTextPart[I] := '';
  
    Invalidate;
  end;
  