anchor.diff:  
   -define(TICK_INTERVAL_MILLIS, 10000).
   -define(REFRESH_INTERVAL_MICROS, 60 * 60* 1000* 1000 * 1000).
  --record(state, { retards =[], upstream = dict:new(), tbd = dict:new(), errors = dict:new() }).
  +-record(state, { pids=[], retards =[], upstream = dict:new(), tbd = dict:new(), errors = dict:new() }).
   
   -compile(export_all).
   % -----------------------------------------------------------------------------
  
positive.code:     NewErrors = dict:store({BaseUrl, AuthorAndModule, Version}, {At, {ErrorType, Reason, StackTrace}}, State#state.errors),
      {noreply, State#state{ tbd = NewTbd, errors = NewErrors}};
  
  handle_info({'EXIT', _Pid, _Reason}, State) ->
      self() ! tick,
      {noreply, State};
  
  handle_info(Msg, State) ->
      {noreply, State}.
  
negative.code: handle_info(tick, State) ->
      ThisPid = self(),
      {Now, UpstreamBaseUrls} = upstream_to_be_refreshed(State),
      Pids = case UpstreamBaseUrls of
          [UpstreamBaseUrl| _] -> 
              Pid = spawn_link(fun() -> refresh_upstream(ThisPid, Now, UpstreamBaseUrl) end),
              [Pid];
          [] -> 
              case dict:fetch_keys(State#state.tbd) of
                  [] ->  
                      timer:send_after(?TICK_INTERVAL_MILLIS, tick),
                      [];
                  [{AuthorAndModule, Version} = Coords|_] -> 
                      BaseUrl = dict:fetch(Coords, State#state.tbd),
                      Pid = spawn_link(fun() -> fetch_and_store_tarball(ThisPid, Now, BaseUrl, AuthorAndModule, Version) end),
                      [Pid]
              end
      end,
      {noreply, State#state{ pids = lists:append(Pids, State#state.pids)}};
  
  handle_info({upstream_metadata, At, UpstreamBaseUrl, VersionsFromUpstream}, State) ->
      Unknown = lists:filter(fun({BaseUrl, {{Author, Module}, Version}}) ->
  