anchor.diff:  -define(V1_VERS, 1).
   
   %% @doc Encode an effecient binary representation of an `mvreg()'
  +%% Not working yet...
   -spec to_binary(mvreg()) -> binary().
   to_binary(MVReg) ->
       <<?TAG:8/integer, ?V1_VERS:8/integer, (riak_dt:to_binary(MVReg))/binary>>.
  
positive.code: value(timestamp, MVReg) ->
      [TS || {_Val, TS} <- MVReg].
  
  %% @doc Assign a `Value' to the `mvreg()'
  %% associating the update with time `TS'. This kind of update is supposed to be
  %% linealizable so the assigner does not need to provide the
  %% timestamp it has observed. The update is only applied if the timestamp
  %% dominate the current one.
  -spec update(mvreg_op(), term(), mvreg()) ->
                      {ok, mvreg()}.
  update({assign, Value, TS}, Actor, MVReg) ->
      case dominate_ts(TS, Actor, MVReg) of 
          true ->
              VV = incVV(MVReg, Actor),
              NewMVReg = [{Value, VV}],
  
negative.code: 
  %% @doc
  %% An Multi-Value Register CRDT.
  %% There are two kinds of updates: assign and propagate.
  %% Assign is used for a single replica of MVReg where updates are linealizable.
  %% Propagate is used to propagate update from a replica to other replicas. It is similar to the 'merge' operation
  %% of the state-based specifiction of MVReg.
  %% Detailed usage is explained later. 
  %% @reference Marc Shapiro, Nuno Preguiça, Carlos Baquero, Marek Zawirski (2011) A comprehensive study of
  %% Convergent and Commutative Replicated Data Types. http://hal.upmc.fr/inria-00555588/
  %%
  