anchor.diff:  
   messages_newer_than_timestamp(_, [], Acc) ->
       lists:reverse(Acc);
  -messages_newer_than_timestamp({L1, M1, S1} = Ts, [{Msg, {L2, M2, S2}}|Rest], Acc) when (L2 > L1 orelse (L2 =:= L1 andalso (M2 > M1 orelse (M2 =:= M1 andalso S2 > S1)))) ->
  -    messages_newer_than_timestamp(Ts, Rest, [Msg|Acc]);
  +messages_newer_than_timestamp({L1, M1, S1} = Ts1, [{Msg, {L2, M2, S2} = Ts2}|Rest], Acc) when (L2 > L1 orelse (L2 =:= L1 andalso (M2 > M1 orelse (M2 =:= M1 andalso S2 > S1)))) ->
  +    messages_newer_than_timestamp(Ts1, Rest, [{Msg, Ts2}|Acc]);
   messages_newer_than_timestamp(_, _, Acc) ->
       lists:reverse(Acc).
   
  +pull_messages(Timestamp, Subscriber, State) ->
  +    Now = erlang:now(),
  +    case messages_newer_than_timestamp(Timestamp, State#state.messages) of
  +        ReturnMessages when erlang:length(ReturnMessages) > 0 ->
  +            Subscriber ! {self(), Now, lists:map(fun({Msg, _Ts}) -> Msg end, ReturnMessages)},
  +            {State#state.subscribers, Now};
  +        _ ->
  +            {[Subscriber|State#state.subscribers], Now}
  +    end.
  
positive.code: 
  -export([init/1, handle_call/3, handle_cast/2, handle_info/2, terminate/2, code_change/3]).
  
  -record(state, {channel, messages = [], subscribers = [], max_age, supervisor}).
  
  start_link() ->
      start_link([]).
  
negative.code:     MaxAgeSeconds = proplists:get_value(max_age, Options, 60),
      Supervisor = proplists:get_value(supervisor, Options),
      Channel = proplists:get_value(channel, Options),
      {ok, #state{max_age = MaxAgeSeconds, supervisor = Supervisor, channel = Channel, last_pull = erlang:now()}, 
          MaxAgeSeconds * 1000}.
  
  handle_call(_From, _, State) ->
  