anchor.diff:      MaxValue = StartKey + Range * Id,
       Ref = make_ref(),
       ?DEBUG("ID ~p generating range ~p to ~p\n", [Id, MinValue, MaxValue]),
  -    fun() -> sequential_int_generator(Ref,Range) + MinValue end;
  +    fun() -> sequential_int_generator(Ref, Range, Id) + MinValue end;
   new({uniform_int, MaxKey}, _Id) ->
       fun() -> random:uniform(MaxKey) end;
   new({pareto_int, MaxKey}, _Id) ->
  
positive.code:     end.
  
  
  sequential_int_generator(Ref, MaxValue) ->
     %% A bit of evil here. We want to generate numbers in sequence and stop
     %% at MaxKey. This means we need state in our anonymous function. Use the process
     %% dictionary to keep track of where we are.
     case erlang:get({sigen, Ref}) of
         undefined ->
             erlang:put({sigen, Ref}, 1),
             0;
         MaxValue ->
             throw({stop, empty_keygen});
         Value ->
             case Value rem 5000 of
                 0 ->
                     ?DEBUG("sequential_int_gen: ~p (~w%)\n", [Value, trunc(100 * (Value / MaxValue))]);
                 _ ->
                     ok
             end,
             erlang:put({sigen, Ref}, Value+1),
             Value
     end.
  
negative.code: new({to_binstr, FmtStr, InputGen}, Id) ->
      Gen = new(InputGen, Id),
      fun() -> list_to_binary(io_lib:format(FmtStr, [Gen()])) end;
  new({sequential_int, MaxKey}, Id) ->
      Ref = make_ref(),
      fun() -> sequential_int_generator(Ref, MaxKey, Id) end;
  new({partitioned_sequential_int, MaxKey}, Id) ->
      new({partitioned_sequential_int, 0, MaxKey}, Id);
  new({partitioned_sequential_int, StartKey, NumKeys}, Id) ->
  