anchor.diff:      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}, 
  +    {ok, #state{max_age = MaxAgeSeconds, supervisor = Supervisor, channel = Channel, last_pull = erlang:now()}, 
           MaxAgeSeconds * 1000}.
   
   handle_call(_From, _, State) ->
  
positive.code:     NewSubscribers = [Subscriber|State#state.subscribers],
      gen_server:reply(From, ok),
      {noreply, State#state{subscribers = NewSubscribers}};
  handle_cast({From, pull, Timestamp, Subscriber}, State) ->
      NewSubscribers = case messages_newer_than_timestamp(Timestamp, State#state.messages) of
          ReturnMessages when erlang:length(ReturnMessages) > 0 ->
              Subscriber ! {self(), erlang:now(), ReturnMessages},
              State#state.subscribers;
          _ ->
              [Subscriber|State#state.subscribers]
      end,
      gen_server:reply(From, ok),
      {noreply, State#state{subscribers = NewSubscribers}};
  handle_cast({From, poll, undefined}, State) ->
      gen_server:reply(From, {ok, erlang:now(), State#state.messages}),
      {noreply, State};
  handle_cast({From, poll, Timestamp}, State) ->
      ReturnMessages = messages_newer_than_timestamp(Timestamp, State#state.messages),
      gen_server:reply(From, {ok, erlang:now(), ReturnMessages}),
      {noreply, State};
  handle_cast({From, push, Message}, State) ->
      Now = erlang:now(),
      lists:map(fun(Sub) ->
                  Sub ! {self(), Now, [Message]}
          end, State#state.subscribers),
      gen_server:reply(From, {ok, Now}),
      CurrentMessages = messages_newer_than_timestamp(now_minus_seconds(erlang:now(), 
              State#state.max_age), State#state.messages),
      NewMessages = [{Message, Now}|CurrentMessages],
      {noreply, State#state{messages = NewMessages, subscribers = []}}.
  
  terminate(_Reason, _State) ->
      ok.
  
negative.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, last_pull, supervisor}).
  
  start_link() ->
      start_link([]).
  