anchor.diff:      noreply.
   
   find_terms_in_range(I, F, ST, ET, State) ->
  -    find_terms_in_range(I, F, ST, ET,
  -                        State#state.table,
  -                        ets:first(State#state.table)).
  +    %% usort removes duplicates introduced by find_terms_in_range/6
  +    lists:usort(
  +      find_terms_in_range(I, F, ST, ET,
  +                          State#state.table,
  +                          ets:first(State#state.table))).
   
   find_terms_in_range(_, _, _, _, _,'$end_of_table') ->
       [];
  -find_terms_in_range(I, F, ST, ET, Table, {I, F, T})
  +find_terms_in_range(I, F, ST, ET, Table, {I, F, T, V})
     when T >= ST, T =< ET ->
  +    %% duplicates will be removed by usort in find_terms_in_range/5
       [T|find_terms_in_range(I, F, ST, ET, Table,
  -                           ets:next(Table, {I, F, T}))];
  +                           ets:next(Table, {I, F, T, V}))];
   find_terms_in_range(I, F, ST, ET, Table, K) ->
       find_terms_in_range(I, F, ST, ET, Table, ets:next(Table, K)).
   
  
positive.code: multi_index(IFTVPKList, State) ->
      %% TODO: look for timestamp before clobbering
      ets:insert(State#state.table,
                 [ {{b(I), b(F), b(T)}, {V, P}, K}
                   || {I, F, T, V, P, K} <- IFTVPKList ]),
      {reply, {indexed, node()}, State}.
  %%% TODO: why can't I {reply, ok} here? (cargo-cult raptor_backend)
  
negative.code:       fun() ->
                R = [{T, node(),
                      ets:select_count(State#state.table,
                                       [{{{b(Index), b(Field), T, '_'},
                                          '_', '_'},
                                         [], [true]}])}
                     || T <- Terms],
                riak_search_backend:info_response(Sender, R)
  