anchor.diff:              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); 
  +            gui_replace_until(BufBot,GL,#gres{state=SN,loop=Loop,focus=-1},State0); % was BL
           (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) ->
  +            gui_replace_until(BufBot,GL,#gres{state=SN,loop=Loop,focus=-1},State0); % was BL
  +        (GuiTop > BufTop) andalso (GuiCnt < GL) ->                                  % was BL
               %% prepend incomplete gui buffer
  -            gui_replace_until(BufBot,BL,#gres{state=SN,loop=Loop,focus=-1},State0);
  +            gui_replace_until(BufBot,GL,#gres{state=SN,loop=Loop,focus=-1},State0); % was BL
           (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); 
  +            gui_replace_until(BufBot,GL,#gres{state=SN,loop=Loop,focus=-1},State0); % was BL
           (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)
  +            gui_replace_until(BufBot,GL,#gres{state=SN,loop=Loop,focus=-1},State0)  % was BL
       end.
   
   -spec serve_stack(atom(), #state{}) -> #state{}.
  
positive.code:     State1 = reply_stack(completed, ReplyTo, State0),
      State2 = gui_replace_until(BufBot,BL,#gres{state=completed},State1),
      {next_state, completed, State2};
  completed({button, <<"more">>, ReplyTo}, #state{bl=BL,bufBot=BufBot}=State0) ->
      % jump .. buffer bottom
      State1 = reply_stack(completed, ReplyTo, State0),
      State2 = gui_replace_until(BufBot,BL,#gres{state=completed},State1),
      {next_state, completed, State2};
  completed({rows, _}, State) ->
      % ignore unsolicited rows
  
negative.code:     RawRows = [raw_row_expand({I,nop,RK}, RowFun) || {I,RK} <- lists:zip(lists:seq(RawBot+1, NewRawBot), Recs)],
      ets:insert(TableId, RawRows),
      IndRows = [?IndRec(R,SortFun) || R <- lists:filter(FilterFun,RawRows)],
      % ?Info("data_append (~p) -IndRows- ~p", [SN,IndRows]),
      FunCol = fun({X,_},{IT,IB,C}) ->  {IT,IB,(C orelse ((X>IT) and (X<IB)))}  end, 
      {_,_,Collision} = lists:foldl(FunCol, {GuiTop, GuiBot, false}, IndRows),    %% detect data collisions with gui content
      ets:insert(IndexId, IndRows),
  