anchor.diff:      lists:sort([Reply || {_, {Reply, _}} <- Dict]).
   
   filter_reply(Replies) ->
  -    case [{ok, Doc} || {ok, Doc} <- Replies] of
  -        [] -> Replies;
  -        Filtered -> Filtered
  -    end.
  +    AllFoundRevs = lists:foldl(fun
  +        ({{{not_found, missing}, _}, _}, Acc) ->
  +            Acc;
  +        ({{_, {Pos, [Rev | _]}}, _}, Acc) ->
  +            [{Pos, Rev} | Acc]
  +    end, [], Replies),
  +    %% keep not_found replies only for the revs that don't also have doc reply
  +    lists:filter(fun
  +        ({{{not_found, missing}, Rev}, _}) ->
  +            not lists:member(Rev, AllFoundRevs);
  +        (_) ->
  +            true
  +    end, Replies).
   
   -ifdef(TEST).
   -include_lib("eunit/include/eunit.hrl").
  
positive.code:             check_not_found_counts_for_descendant(),
              check_worker_error_skipped(),
              check_not_found_replies_are_removed_when_doc_found(),
              check_not_found_returned_when_doc_not_found()
          ]
      }.
  
negative.code:     RexiMon = fabric_util:create_monitors(Workers),
      try fabric_util:recv(Workers, #shard.ref, fun handle_message/3, State) of
      {ok, Replies} ->
          {ok, Replies};
      {timeout, #state{workers=DefunctWorkers}} ->
          fabric_util:log_timeout(DefunctWorkers, "open_revs"),
          {error, timeout};
  