anchor.diff:              if IncludeDocs -> [doc_member(Db, DocInfo, Opts)]; true -> [] end
           ]},
           Go = rexi:sync_reply(ChangesRow),
  -        {Go, {Db, Seq, Args, Options}}
  +        {Go, Acc#cacc{seq = Seq, pending = Pending-1}}
       end.
   
   doc_member(Shard, DocInfo, Opts) ->
  
positive.code:         StartSeq = calculate_start_seq(Db, node(), StartVector),
          Enum = fun changes_enumerator/2,
          Opts = [{dir,Dir}],
          Acc0 = {Db, StartSeq, Args, Options},
          try
              {ok, {_, LastSeq, _, _}} =
                  couch_db:changes_since(Db, StartSeq, Enum, Opts, Acc0),
              rexi:reply({complete, [{seq, {LastSeq, uuid(Db)}}]})
          after
              couch_db:close(Db)
          end;
  
negative.code:         end
      end.
  
  changes_enumerator(#doc_info{id= <<"_local/", _/binary>>, high_seq=Seq}, Acc) ->
      {ok, Acc#cacc{seq = Seq, pending = Acc#cacc.pending-1}};
  changes_enumerator(DocInfo, Acc) ->
      #cacc{
          db = Db,
          args = #changes_args{include_docs = IncludeDocs, filter = Filter},
          options = Options,
          pending = Pending
      } = Acc,
      Conflicts = proplists:get_value(conflicts, Options, false),
      #doc_info{id=Id, high_seq=Seq, revs=[#rev_info{deleted=Del}|_]} = DocInfo,
      case [X || X <- couch_changes:filter(Db, DocInfo, Filter), X /= null] of
      [] ->
          {ok, Acc#cacc{seq = Seq, pending = Pending-1}};
      Results ->
          Opts = if Conflicts -> [conflicts]; true -> [] end,
          ChangesRow = {change, [
  	    {pending, Pending-1},
              {seq, {Seq, uuid(Db)}},
              {id, Id},
              {changes, Results},
  