anchor.diff:      procedure Add(const aValue : double); overload;
       procedure Add(const aValue : TNullableDouble); overload;
   
  +    procedure Subtract(const aValue : double); overload;
  +    procedure Subtract(const aValue : TNullableDouble); overload;
  +
  +
       class function StringToVariant(const aValue: String): Variant;
       class function VariantToString(const aValue: Variant; const aDisplayFormat : string): String;
   
  
positive.code: begin
    if aValue.NotNull then
      Self.Add(aValue.Value);
  end;
  
  class function TNullableDouble.StringToVariant(const aValue: String): Variant;
  
negative.code:     Self.Add(aValue.Value);
  end;
  
  procedure TNullableInteger.Subtract(const aValue: integer);
  begin
    if Self.IsNull then
      Self.SetValue(-1 * aValue)
    else
      Self.SetValue(Self.Value - aValue);
  end;
  
  procedure TNullableInteger.Subtract(const aValue: TNullableInteger);
  begin
    if aValue.NotNull then
      Self.Subtract(aValue.Value);
  end;
  
  class function TNullableInteger.StringToVariant(const aValue: String): Variant;
  begin
    if IsNumeric(aValue, false) then
  