anchor.diff:               agree_on_height(PeerId, RHash, CheckHeight, CheckHeight, Max, Min, AgreedHash);
            {error, Reason} ->
                lager:debug("Fetching header ~p from ~p failed: ~p", [CheckHeight, ppp(PeerId), Reason]),
  -             {Min, AgreedHash}
  +             {error, Reason}
       end.
   
   fill_pool(PeerId, AgreedHash, ST) ->
  
positive.code: update_sync_task(Update, Task) ->
      gen_server:call(?MODULE, {update_sync_task, Update, Task}).
  
  next_work_item(Task, LastResult) ->
      gen_server:call(?MODULE, {next_work_item, Task, LastResult}).
  
  handle_worker(Task, Action) ->
      gen_server:cast(?MODULE, {handle_worker, Task, Action}).
  
negative.code:     ok;
  post_blocks(From, _To, [{Height, _Hash, {_PeerId, local}} | Blocks]) ->
      post_blocks(From, Height, Blocks);
  post_blocks(From, To, [{Height, _Hash, {PeerId, Block}} | Blocks]) ->
      case aec_conductor:add_synced_block(Block) of
          ok ->
              post_blocks(From, Height, Blocks);
          {error, Reason} ->
              lager:info("Failed to add synced block ~p: ~p", [Height, Reason]),
              [ lager:info("Synced blocks ~p - ~p", [From, To - 1]) || To > From ],
              {error, PeerId, Height}
      end.
  
  %% Ping logic makes sure they always agree on genesis header (height 0)
  