anchor.diff:          '$end_of_table' -> 
               fun() -> eof end;
           OffsetKey ->
  -            [{_, Offset, Bloom}] = ets:lookup(Segment#segment.offsets_table, OffsetKey),
  +            [{_, StartPos, Offsets, Bloom}] = ets:lookup(Segment#segment.offsets_table, OffsetKey),
               case mi_bloom:is_element(Key, Bloom) of
                   true ->
                       {ok, ReadOpts} = application:get_env(merge_index, segment_read_options),
                       {ok, FH} = file:open(data_file(Segment), [read, raw, binary] ++ ReadOpts),
  -                    file:position(FH, Offset),
  -                    fun() -> iterate_term(FH, Key) end;
  +                    file:position(FH, StartPos),
  +                    fun() -> iterate_term(FH, Offsets, Key) end;
                   false ->
                       fun() -> eof end
               end
  
positive.code: 
  from_iterator_inner(W, eof) ->
      Key = {W#writer.last_index, W#writer.last_field, W#writer.last_term},
      ets:insert(W#writer.offsets_table, {Key, W#writer.pos, W#writer.bloom}),
      W#writer { count = 0,
                 offset = W#writer.pos}.
  
  %% return the number of results under this IFT.
  %% TODO - Fix this.
  
negative.code:     %% Start a new keyspace...
      BytesWritten1 = write_key(W#writer.data_file, Index, Field, Term),
      BytesWritten2 = write_seg_value(W#writer.data_file, Value, Props, TS),
      W2 = W1#writer { last_offset = W1#writer.pos + BytesWritten1,
                       offsets = [(W1#writer.pos-W1#writer.last_offset)|W1#writer.offsets],
                       pos = W1#writer.pos + BytesWritten1 + BytesWritten2,
                       last_index = Index,
                       last_field = Field,
                       last_term = Term,
  