anchor.diff:    when undefined =/= H ->
       case R#result.status of
           S when ?ISSET(S,?SERVER_STATUS_CURSOR_EXISTS) ->
  -            L = [fun stmt_fetch_pre/2, fun send/3, fun stmt_fetch_post/2],
  -            loop(P, [X], L);
  +            loop([X,P], [fun stmt_fetch_pre/2, fun send/3, fun stmt_fetch_post/2]);
           _ ->
               {ok, X, P}
       end.
  
positive.code: send(Term, Binary, #protocol{handle=H,compress=Z}=P) ->
      case myer_network:send(H, Binary, Z) of
  	{ok, Handle} ->
  	    {ok, [Term], replace(P,Handle)};
  	{error, Reason, Handle} ->
  	    {error, Reason, replace(P,Handle)}
      end.
  
negative.code: -spec stmt_reset(protocol(),prepare()) -> {ok,prepare(),protocol()}|{error,_,protocol()}.
  stmt_reset(#protocol{handle=H}=P, #prepare{}=X)
    when undefined =/= H ->
      loop([X,P], [fun stmt_reset_pre/2, fun send/3, fun recv_status/2, fun stmt_reset_post/3]).
  
  -spec next_result(protocol())
                   -> {ok,result(),protocol()}|
                      {ok,{[field()],[term()],result()},protocol()}|{error,_,protocol()}.
  next_result(#protocol{handle=H}=P)
    when undefined =/= H ->
      loop([P], [fun next_result_pre/1, fun recv_status/1, fun real_query_post/2]).
  
  -spec stmt_next_result(protocol(),prepare())
                        -> {ok,prepare()}|{ok,[field()],[term()],prepare(),protocol()}|{error,_, protocol()}.
  stmt_next_result(#protocol{handle=H}=P, #prepare{}=X)
    when undefined =/= H ->
      loop([X,P], [fun stmt_next_result_pre/2, fun recv_status/2, fun stmt_next_result_post/3]).
  
  
  %% == protected ==
  
  -spec binary_to_float(binary(),non_neg_integer()) -> float().
  binary_to_float(Binary, _Decimals) ->
      try binary_to_float(Binary)
      catch
          _:_ ->
              try binary_to_integer(Binary) of
                  I ->
                      I * 1.0
              catch
  