anchor.diff:      NewGuiCnt = length(IdsKept)+1+Cnt,
       NewGuiTop = hd(hd(Rows)),
       NewGuiBot = lists:last(IdsKept),
  -    ?Log("gui_prepend (~p ~p) ~p ~p~n", [NewGuiTop, NewGuiBot, GuiResult#gres.state, GuiResult#gres.loop]),
  -    gui_response(GuiResult#gres{operation=prp,rows=Rows,keep=NewGuiCnt}
  -        ,State0#state{guiCnt=NewGuiCnt,guiTop=NewGuiTop,guiBot=NewGuiBot});
  +    ?Log("gui_prepend ~p .. ~p ~p ~p~n", [NewGuiTop, NewGuiBot, GuiResult#gres.state, GuiResult#gres.loop]),
  +    State1 = State0#state{guiCnt=NewGuiCnt,guiTop=NewGuiTop,guiBot=NewGuiBot},
  +    gui_response(GuiResult#gres{operation=prp,rows=Rows,keep=NewGuiCnt},State1);
   gui_prepend(GuiResult,#state{nav=ind,bl=BL,gl=GL,tableId=TableId,guiCnt=GuiCnt,guiTop=GuiTop}=State0) ->
       Keys=keys_before(GuiTop, BL, State0),
       Cnt = length(Keys),
  
positive.code:     {next_state, filling, State}.
  
  
  autofilling({button, '...', ReplyTo}, #state{dirtyCnt=DC}=State0) when DC==0->
      % stop fetch, clear buffer and start tailing
      State1 = reply_stack(tailing, ReplyTo, State0),
      State2 = fetch_close(State1),
      State3 = data_clear(State2),
      State4 = fetch(skip,true, State3#state{tailMode=true}),
      State5 = gui_clear(#gres{state=tailing, loop='>|...'},State4),
      {next_state, tailing, State5};
  autofilling({button, '...', ReplyTo}, State0) ->
      % reject because of uncommitted changes
      State1 = gui_nop(#gres{state=autofilling,beep=true,message=?MustCommit},State0#state{replyTo=ReplyTo}),
      {next_state, autofilling, State1};
  autofilling({button, '>|...', ReplyTo}=Cmd, #state{tailMode=TailMode}=State0) ->
      if 
          (TailMode == false) ->
              % too late to change to seamless tail mode now
              State1 = gui_nop(#gres{state=autofilling,beep=true},State0#state{replyTo=ReplyTo}),
              {next_state, autofilling, State1};
          true ->
              % tailing will happen anyways at the end of the bulk fetch, keep command on stack
              State1 = reply_stack(autofilling, ReplyTo, State0),
              State2 = gui_clear(State1),
              {next_state, autofilling, State2#state{stack=Cmd}}
      end;
  autofilling({button, '>|', ReplyTo}=Cmd, #state{tailMode=TailMode}=State0) ->
      if 
          (TailMode == true) ->
              % too late to revoke tail mode now
              State1 = gui_nop(#gres{state=autofilling,beep=true},State0#state{replyTo=ReplyTo}),
              {next_state, autofilling, State1};
          true ->
              % already waiting for end of fetch, keep command on stack
              State1 = reply_stack(autofilling, ReplyTo, State0),
              {next_state, autofilling, State1#state{stack=Cmd}}
      end;
  autofilling({rows, {Recs,false}}, State0) ->
  
negative.code:                   ctx                 %% statement & fetch context
                  , tableId             %% ets raw buffer table id 
                  , indexId             %% ets index table id 
                  , bl                  %% block_length (passed .. init)
                  , gl                  %% gui max length (row count) = gui_max(#state.bl)
                  , stmtRef             %% statement reference
                  , rowFun              %% RowFun
  