anchor.diff:      end.
   
   -spec serve_bot(atom(), binary(), #state{}) -> #state{}.
  -serve_bot(SN, Loop, #state{nav=Nav,bl=BL,gl=GL,bufCnt=BufCnt,bufBot=BufBot,guiCnt=GuiCnt,guiBot=GuiBot,bufTop=BufTop,guiTop=GuiTop,guiCol=GuiCol}=State0) ->
  -    ?NoDbLog(debug, [], "serve_bot  (~p ~p) ~p ~p ~p ~p", [SN, Loop, BufCnt, BufBot, GuiCnt, GuiBot]),
  +serve_bot(SN, Loop, #state{nav=Nav,gl=GL,bufCnt=BufCnt,bufBot=BufBot,guiCnt=GuiCnt,guiBot=GuiBot,bufTop=BufTop,guiTop=GuiTop,guiCol=GuiCol}=State0) ->
  +    % ?Info("serve_bot (~p ~p) ~p ~p ~p ~p",[SN, Loop, BufCnt, BufBot, GuiCnt, GuiBot]),
       if
           (BufCnt == 0) ->
               %% no data, serve empty
  
positive.code:             gui_clear(#gres{state=SN,loop=Loop},State1);
          (GuiCnt == 0) ->
              %% uninitialized view, must refresh    
              gui_replace_until(BufBot,BL,#gres{state=SN,loop=Loop,focus=-1},State0); 
          (GuiCol == true) ->
              %% dirty index view, must refresh anyways    
              gui_replace_until(BufBot,BL,#gres{state=SN,loop=Loop,focus=-1},State0);
          (GuiTop > BufTop) andalso (GuiCnt < BL) ->
              %% prepend incomplete gui buffer
              gui_replace_until(BufBot,BL,#gres{state=SN,loop=Loop,focus=-1},State0);
          (GuiBot == BufBot) ->
              %% gui is already there, noting .. do       
              gui_nop(#gres{state=SN,loop=Loop,focus=-1},State0); 
          (Nav == raw) andalso (GuiBot < BufBot-GL) ->
              %% uninitialized view, must refresh    
              gui_replace_until(BufBot,BL,#gres{state=SN,loop=Loop,focus=-1},State0); 
          (Loop == <<"tail">>) andalso (SN == tailing) ->
              %% tailing should append (don't call this far from bottom of big buffer)                 
              gui_append(#gres{state=SN,loop=Loop,focus=-1},State0#state{tailLock=false}); 
          true ->
              %% jump to end and discard other cases (avoid scrolling big buffer)                 
              gui_replace_until(BufBot,BL,#gres{state=SN,loop=Loop,focus=-1},State0)
      end.
  
  -spec serve_stack(atom(), #state{}) -> #state{}.
  
negative.code: 
  -spec serve_ffwd(atom(), #state{}) -> #state{}.
  serve_ffwd(SN,#state{nav=Nav,bl=BL,bufCnt=BufCnt,bufBot=BufBot,guiCnt=GuiCnt,guiBot=GuiBot,replyToFun=ReplyTo}=State0) ->
      % ?Info("serve_ffwd (~p) ~p ~p ~p ~p",[SN, BufCnt, BufBot, GuiCnt, GuiBot]),
      if
          (BufCnt == 0) andalso (SN == filling) ->
              ?Debug("~p waiting for fetch to complete ~p", [SN, <<">>">>]),
  