anchor.diff:        {$ENDIF}
       ftBoolean:
         begin
  -        {$IFNDEF FPC}
  +        {$IFDEF FPC}
  +        if AVariant then
  +          Integer(ABuffer^) := 1
  +        else
  +          Integer(ABuffer^) := 0;
  +        {$ELSE}
           VarAsType(AVariant, VT_BOOL);
           WordBool(ABuffer^) := tagVariant(AVariant).vbool;
           {$ENDIF}
  
positive.code:     ftWord:
        AVariant := Word(ABuffer^);
      ftBoolean:
        AVariant := WordBool(ABuffer^);
      ftFloat, ftCurrency:
        AVariant := Double(ABuffer^);
      ftBlob, ftMemo, ftGraphic, ftWideMemo:
  
negative.code:     ftGuid, ftFixedChar, ftString:
        begin
          PAnsiChar(ABuffer)[AField.Size] := #0;
          if (VarType(AVariant) = varString) or (VarType(AVariant) = varolestr) then
          begin
            Size                     := Min(Length(AVariant), AField.Size);
  