anchor.diff:    transact(DB, fun(Tx) -> get(Tx, Select) end);
   get(Tx={tx, _}, Select = #select{}) ->
     Iterator = bind(Tx, Select),
  -  iterate_all(Iterator);
  +  Next = next(Iterator),
  +  Next#iterator.data;
   get(FdbHandle, Key) -> 
     get(FdbHandle, Key, not_found).
   
   %% @doc Gets a range of key_values where `begin <= X < end`
  --spec get_range(fdb_handle(), fdb_key(),fdb_key()) -> ([term()]).
  +-spec get_range(fdb_handle(), fdb_key(),fdb_key()) -> ([term()]|{error,nif_not_loaded}).
   %% @end
   get_range(Handle, Begin, End) ->
     get(Handle, #select{gte = Begin, lt = End}).
  
positive.code: -export([bind/2, next/1]).
  -export([init_and_open/0, init_and_open/1]).
  
  -behaviour(gen_fdb).
  
  -define (FDB_API_VERSION, 21).
  
  
negative.code:   #iterator{tx = Transaction, select = Select, iteration = Select#select.iteration}.
  
  %% @doc Get data of an iterator; returns the iterator or `done` when finished
  -spec next(#iterator{}) -> (#iterator{}).
  %% @end
  next(Iterator = #iterator{tx = Transaction, iteration = Iteration, select = Select}) ->
    {FstKey, FstIsEq, FstOfs} = fst_gt(Select#select.gt, Select#select.gte),
    {LstKey, LstIsEq, LstOfs} = lst_lt(Select#select.lt, Select#select.lte),
  