anchor.diff:          FieldName = sumo_internal:field_name(Field),
           FieldValue = sumo_internal:get_field(FieldName, Doc),
           [{FieldName, FieldType, FieldValue} | Acc];
  -      _ ->
  +     _ ->
           Acc
       end
  +  end, [], SchemaFields).
  +
  +%% @private
  +fields_from_doc(Doc) ->
  +  DocName = sumo_internal:doc_name(Doc),
  +  Schema = sumo_internal:get_schema(DocName),
  +  SchemaFields = sumo_internal:schema_fields(Schema),
  +  lists:foldl(fun(Field, Acc) ->
  +    FieldType = sumo_internal:field_type(Field),
  +    FieldName = sumo_internal:field_name(Field),
  +    FieldValue = sumo_internal:get_field(FieldName, Doc),
  +    [{FieldName, FieldType, FieldValue} | Acc]
     end, [], SchemaFields).
   
   %% @private
  
positive.code:       {date, {_, _, _}} ->
          {Date, _} = calendar:now_to_universal_time(FieldValue),
          sumo_internal:set_field(FieldName, Date, Acc);
        _ ->
          Acc
      end
    end, Doc, DTFields).
  
  %% @private
  datetime_fields_from_doc(Doc) ->
  
negative.code: 
  %% @private
  wakeup(Doc) ->
    Fields = fields_from_doc(Doc),
    lists:foldl(fun({FieldName, FieldType, FieldValue}, Acc) ->
      case {FieldType, FieldValue} of
        {datetime, {_, _, _}} ->
  