anchor.diff:  
             case PropList[Index].PropType^.Kind of
               tkInteger, tkChar, tkWChar:
  -              InternAdd(PropName, GetOrdProp(AObject, PropList[Index]));
  +              begin
  +                intVal := GetOrdProp(AObject, PropList[Index]);
  +                if ASkipDefaultValues and (intVal = 0) then Continue;
  +                InternAdd(PropName, intVal);
  +              end;
   
               tkEnumeration:
                 begin
                   PropType := PropList[Index].PropType^;
                   if (PropType = TypeInfo(Boolean)) or (PropType = TypeInfo(ByteBool)) or
                      (PropType = TypeInfo(WordBool)) or (PropType = TypeInfo(LongBool)) then
  -                  InternAdd(PropName, GetOrdProp(AObject, PropList[Index]) <> 0)
  +                begin
  +                  boolVal := GetOrdProp(AObject, PropList[Index]) <> 0;
  +                  if ASkipDefaultValues and not boolVal then Continue;
  +                  InternAdd(PropName, boolVal)
  +                end
                   else
                     InternAdd(PropName, GetOrdProp(AObject, PropList[Index]));
                 end;
  
positive.code:   end;
  end;
  
  procedure TJsonObject.FromSimpleObject(AObject: TObject; ALowerCamelCase: Boolean);
  var
    Index, Count: Integer;
    PropList: PPropList;
    PropType: PTypeInfo;
    PropName: string;
    V: Variant;
    D: Double;
    Ch: Char;
  begin
    Clear;
    if AObject = nil then
  
negative.code:     procedure ToSimpleObject(AObject: TObject; ACaseSensitive: Boolean = True);
      // FromSimpleObject() clears the JSON object and adds the Delphi object's properties.
      // The object's class must be compiled with the $M+ compiler switch or derive from TPersistent.
      procedure FromSimpleObject(AObject: TObject; ALowerCamelCase: Boolean = False; ASkipDefaultValues: Boolean = False);
  
      procedure Clear;
      procedure Remove(const Name: string);
  