anchor.diff:    if aSourceField.IsNull then
       Self.IsNull:= true
     else
  -    Self.Value:= aSourceField.AsDateTime;
  +  begin
  +    if aSourceField.DataType in [ftDateTime, ftTime, ftTimeStamp, ftDate] then
  +      Self.Value:= aSourceField.AsDateTime
  +    else
  +      Self.Assign(aSourceField.AsString);
  +  end;
     FTagChanged:= false;
   end;
   
  
positive.code: class function TNullableDateTime.StringToVariant(const aValue: String): Variant;
  var
    tmpDate : TDateTime;
  begin
    if aValue = '' then
      Result := Null
    else
      if TryToUnderstandDateString(aValue, tmpDate) then
        Result := tmpDate
      else
        raise Exception.Create('This string cannot be converted to date: ' + aValue);
  
negative.code:   if aSourceField.IsNull then
      Self.IsNull:= true
    else
      if aSourceField.DataType in [ftDateTime, ftTime, ftTimeStamp, ftDate] then
        Self.Value:= aSourceField.AsDateTime
      else
        Self.Assign(aSourceField.AsString);
    FTagChanged:= false;
  end;
  
  