anchor.diff:          _ ->    {ets:first(IndexId),ets:last(IndexId)}
       end,
       NewGuiCol = (GuiCol or Collision),    
  -    ?NoDbLog(debug, [], "data_append count ~p bufBot ~p pfc=~p stale=~p", [Cnt,NewRawBot,NewPfc,NewGuiCol]),
  +    % ?Info("data_append (~p) count ~p bufBot ~p pfc=~p stale=~p", [SN,Cnt,NewRawBot,NewPfc,NewGuiCol]),
       serve_stack(SN, set_buf_counters(State0#state{ pfc=NewPfc
                                                   , rawCnt=NewRawCnt,rawTop=NewRawTop,rawBot=NewRawBot
                                                   , indCnt=NewIndCnt,indTop=NewIndTop,indBot=NewIndBot
  
positive.code:     NewRawCnt = RawCnt+Cnt,
      NewRawTop = min(RawTop,RawBot+1),   % initialized .. 1 and then changed only in delete or clear
      NewRawBot = RawBot+Cnt,
      ?NoDbLog(debug, [], "data_append count ~p bufBot ~p pfc ~p", [Cnt,NewRawBot,NewPfc]),
      ets:insert(TableId, [list_to_tuple([I,nop|[R]])||{I,R}<-lists:zip(lists:seq(RawBot+1, NewRawBot), Recs)]),
      serve_stack(SN, set_buf_counters(State0#state{pfc=NewPfc,rawCnt=NewRawCnt,rawTop=NewRawTop,rawBot=NewRawBot}));
  data_append(SN, {Recs,_Complete},#state{nav=ind,tableId=TableId,indexId=IndexId
  
negative.code:     end.
  
  -spec serve_bot(atom(), binary(), #state{}) -> #state{}.
  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
  