anchor.diff:      % skip fetch, schedule tail
       State1 = fetch(skip,true, State0#state{tailMode=true,tailLock=false}),
       {next_state, tailing, State1#state{stack={button,<<"...">>,ReplyTo}}};
  +empty({button, <<"pt">>, ReplyTo}, #state{nav=ind}=State0) ->
  +    % reject command because of uncommitted changes
  +    State1 = gui_nop(#gres{state=empty,beep=true,message= ?PtNoSort},State0#state{replyToFun=ReplyTo}),
  +    {next_state, empty, State1};
   empty({button, <<"pt">>, ReplyTo}, State0) ->
       % passthrough, schedule tail
       State1 = fetch(push,true, State0#state{tailMode=true,tailLock=false}),
  
positive.code:     Fsm = {?MODULE,self()},
      Fsm:rows({Rows,Completed}),
      {next_state, SN, State, infinity};
  handle_info(cmd_stack_timeout, tailing, #state{stack={button, <<"tail">>, RT}}=State) ->
      % we didn't get any new data to send, so we reply with nop.
      ?NoDbLog(debug, [], "Tail timeout, replying with nop", []),
      State1 = gui_nop(#gres{state=tailing, loop= <<"tail">>, focus=-1},State#state{stack=undefined,replyToFun=RT,tRef=undefined}),
      {next_state, tailing, State1, infinity};
  handle_info({'EXIT', _Pid, Reason} = ExitMsg, _SN, State) ->
      ?Debug("~p received exit message ~p", [self(), ExitMsg]),
      {stop, Reason, State};
  
negative.code: filling({button, <<"...">>, ReplyTo}, State0) ->
      % reject command because of uncommitted changes
      State1 = gui_nop(#gres{state=filling,beep=true,message= ?MustCommit},State0#state{replyToFun=ReplyTo}),
      {next_state, filling, State1};
  filling({button, <<"pt">>, ReplyTo}, #state{nav=ind}=State0) ->
      % reject command because of uncommitted changes
      State1 = gui_nop(#gres{state=filling,beep=true,message= ?PtNoSort},State0#state{replyToFun=ReplyTo}),
      {next_state, filling, State1};
  filling({button, <<"pt">>, ReplyTo}, #state{dirtyCnt=DC}=State0) when DC==0 ->
      % passthrough, schedule tail
  