anchor.diff:              0
       end.
   
  -is_owner(Node, Seq, Epochs) ->
  -    validate_epochs(Epochs),
  -    Node =:= owner_of(Seq, Epochs).
  -
  -owner_of(_Seq, []) ->
  -    undefined;
  -owner_of(Seq, [{EpochNode, EpochSeq} | _Rest]) when Seq > EpochSeq ->
  -    EpochNode;
  -owner_of(Seq, [_ | Rest]) ->
  -    owner_of(Seq, Rest).
  -
  -validate_epochs(Epochs) ->
  -    %% Assert uniqueness.
  -    case length(Epochs) == length(lists:ukeysort(2, Epochs)) of
  -        true  -> ok;
  -        false -> erlang:error(duplicate_epoch)
  -    end,
  -    %% Assert order.
  -    case Epochs == lists:sort(fun({_, A}, {_, B}) -> B =< A end, Epochs) of
  -        true  -> ok;
  -        false -> erlang:error(epoch_order)
  -    end.
  +owner(Node, Seq, Epochs) ->
  +    owner(Node, Seq, Epochs, infinity).
  +
  +owner(_Node, _Seq, [], _HighSeq) ->
  +    false;
  +owner(Node, Seq, [{EpochNode, EpochSeq} | _Rest], HighSeq)
  +  when Node =:= EpochNode andalso Seq < HighSeq andalso Seq >= EpochSeq ->
  +    true;
  +owner(Node, Seq, [{_EpochNode, EpochSeq} | Rest], _HighSeq) ->
  +    owner(Node, Seq, Rest, EpochSeq).
   
   -ifdef(TEST).
   -include_lib("eunit/include/eunit.hrl").
  
positive.code:     %% return integer if we didn't get a vector.
      ?assertEqual(4, calculate_start_seq(#db{}, 4)).
  
  is_owner_test() ->
      ?assertNot(is_owner(foo, 1, [])),
      ?assertNot(is_owner(foo, 1, [{foo, 1}])),
      ?assert(is_owner(foo, 2, [{foo, 1}])),
      ?assert(is_owner(foo, 50, [{bar, 100}, {foo, 1}])),
      ?assert(is_owner(foo, 50, [{baz, 200}, {bar, 100}, {foo, 1}])),
      ?assert(is_owner(bar, 150, [{baz, 200}, {bar, 100}, {foo, 1}])),
      ?assertError(duplicate_epoch, is_owner(foo, 1, [{foo, 1}, {bar, 1}])),
      ?assertError(epoch_order, is_owner(foo, 1, [{foo, 100}, {bar, 200}])).
  
  -endif.
  
negative.code: calculate_start_seq(Db, {Seq, Uuid, Node}) ->
      case couch_db:get_uuid(Db) == Uuid of
          true ->
              case owner(Node, Seq, couch_db:get_epochs(Db)) of
                  true -> Seq;
                  false -> 0
              end;
  