anchor.diff:  
   %% @todo doc
   %% @todo spec
  -broadcast_data(Msg) ->
  -    Id = druuid:v4(),
  +broadcast_data(#broadcast{id=Id, type=Type, value=Value}=Msg) ->
       lager:warning("id: ~p, msg: ~p", [Id, Msg]),
  -    {Id, Msg}.
  +    {{Id, Type, Value}, {Id, Type, Value}}.
   
   %% @todo doc
   %% @todo spec
  -merge(Id, Msg) ->
  -    lager:warning("id: ~p, msg: ~p", [Id, Msg]),
  -    false.
  +merge({Id, Type, Value}, {Id, Type, Value}) ->
  +    lager:warning("id: ~p, type: ~p value: ~p", [Id, Type, Value]),
  +
  +    case is_stale({Id, Type, Value}) of
  +        true ->
  +            false;
  +        false ->
  +            {ok, _} = local_bind(Id, Type, Value),
  +            true
  +    end.
   
   %% @todo doc
   %% @todo spec
  -is_stale(Id) ->
  -    lager:warning("id: ~p", [Id]),
  -    true.
  +is_stale({Id, Type, Value}) ->
  +    lager:warning("id: ~p, type: ~p value: ~p", [Id, Type, Value]),
  +
  +    Result = case read(Id, undefined) of
  +        {ok, {_I, T, V}} ->
  +            not lasp_lattice:is_lattice_strict_inflation(T, V, Value);
  +        _ ->
  +            %% We don't know about the value yet; not stale.
  +            false
  +    end,
  +
  +    lager:warning("returning: ~p", [Result]),
  +
  +    Result.
   
   %% @todo doc
   %% @todo spec
  
positive.code: %%      {@link declare/0}) dataflow variable.  The `Value' provided is
  %%      the value to bind.
  %%
  -spec bind(id(), value()) -> {ok, id()} | error().
  bind(Id, Value) ->
      gen_server:call(?MODULE, {bind, Id, Value}, infinity).
  
  %% @doc Bind a dataflow variable to another dataflow variable.
  %%
  
negative.code: %% State record.
  -record(state, {store :: store()}).
  
  %% Broadcast record.
  -record(broadcast, {id :: id(), type :: type(), value :: value()}).
  
  %% Definitions for the bind/read fun abstraction.
  -define(BIND, fun(_AccId, _AccValue, _Store) ->
                  ?CORE:bind(_AccId, _AccValue, _Store)
  