anchor.diff:                  dtpMonth: YMD.Month := L;
                   dtpYear: YMD.Year := L;
                 end;
  -              if not TryEncodeDate(YMD.Year, YMD.Month, YMD.Day, D) then begin
  +              if not TryEncodeDate(YMD.Year, YMD.Month, YMD.Day, D) then
                   D := MinDate - 1;
  -              end;
  +
                 if (D < MinDate) or (D > MaxDate) then begin
                   if N = 4 then begin
                     UpdateDate;
                     Finished := True;
                   end else
                     S := Key;
  -              end;
  +
  +              end else
  +                ForceChange := True;
  +
               end else begin
                 if (TTP = ttpHour) and (FTimeFormat = tf12) then begin
                   if not (L in [1..12]) then
  -                  S := Key;
  +                  S := Key
  +                else
  +                  ForceChange := True;
   
                 end else begin
   
  
positive.code:                 end;
                  if not TryEncodeTime(HMSMs.Hour, HMSMs.Minute, HMSMs.Second,
                                               HMSMs.MiliSec, T) then
                    S := Key;
  
                end;
              end;
  
negative.code:           else
              Finished := True;
            end;
            ForceChange := True;
  
          end else if Key in ['0'..'9'] then begin
  
            TTP := ttpAMPM;
            DTP := GetCurrentDateTextPart;
  
  