anchor.diff:      dtNumeric:
         Result := FieldAsDouble(I);
       dtBlob:
  -      Result := FieldAsBlobText(I);
  +      Result := FieldAsBlobVariant(I); //  FieldAsBlobText(I);
       dtDate:
       begin
         if not TryStrToDate(FieldAsString(I), dt1, fDB.FmtSett) then
  
positive.code:     function FieldAsBlob(I: Cardinal): TMemoryStream;
      function FieldAsBlobPtr(I: Cardinal; out iNumBytes: integer): Pointer;
      function FieldAsBlobText(I: Cardinal): string;
      function FieldIsNull(I: Cardinal): Boolean;
      function FieldAsString(I: Cardinal): string;
      function FieldAsDouble(I: Cardinal): double;
  
negative.code: 
  end;
  
  function TSQLiteUniTable.FieldAsBlobVariant(I: Cardinal): Variant;
  var
    LStream: TMemoryStream;
    MyBuffer: Pointer;
  begin
    Result := Null;
    LStream := FieldAsBlob(I);
    if Assigned(LStream) then
    begin
      try
        LStream.Position := 0;
        Result := VarArrayCreate([0, LStream.Size - 1], VarByte);
        MyBuffer := VarArrayLock(Result);
        LStream.ReadBuffer(MyBuffer^, LStream.Size);
      finally
        VarArrayUnlock(Result);
        LStream.Free;
      end;
     end;
  end;
  
  function TSQLiteUniTable.FieldAsDouble(I: cardinal): double;
  begin
    Result := Sqlite3_ColumnDouble(fstmt, i);
  