anchor.diff:  
   %% @private
   convergence() ->
  -    {ok, Convergence} = lasp:query(?CONVERGENCE_ID),
  +    {ok, Convergence} = lasp:read(?CONVERGENCE_ID, undefined),
  +    lager:info("*** read: ~p", [Convergence]),
       Convergence.
   
   %% @private
   bind_convergence({Id, Type, Metadata, Value}) ->
  -    {ok, Value} = ?MODULE:local_bind(Id, Type, Metadata, Value),
  -    {ok, Value}.
  +    {ok, Result} = ?MODULE:local_bind(Id, Type, Metadata, Value),
  +    {ok, Result}.
  
positive.code: -type broadcast_message() :: #broadcast{}.
  -type broadcast_id() :: id().
  -type broadcast_clock() :: clock().
  -type broadcast_payload() :: {id(), type(), metadata(), value(), crdt()}.
  
  %% @doc Returns from the broadcast message the identifier and the payload.
  -spec broadcast_data(broadcast_message()) ->
  
negative.code:             {ok, _} = ?MODULE:local_bind(Id, Type, Metadata, Value),
              bind_convergence(Convergence),
              true
      end;
  merge({_Id, _Clock}, Payload) ->
      lager:error("Incoming merge didn't match payload: ~p", [Payload]),
      false.
  
  %% @doc Use the clock on the object to determine if this message is
  %%      stale or not.
  