anchor.diff:  
   -spec do_tag_request(term(), tagname(), replyto(), state()) ->
                               state().
  -do_tag_request(M, Tag, From, #state{tags = Tags, tag_cache = Cache} = S) ->
  -    {Pid, TagsN} = get_tag_pid(Tag, Tags, Cache),
  +do_tag_request(M, Tag, From, #state{tags = Tags, tag_cache = {Valid, Cache}} = S) ->
  +    {Pid, TagsN} = get_tag_pid(Tag, Tags, {Valid, Cache}),
       gen_server:cast(Pid, {M, From}),
  -    S#state{tags = TagsN,
  -            tag_cache = Cache =/= false andalso gb_sets:add(Tag, Cache)}.
  +    case Valid of
  +        true -> S#state{tags = TagsN, tag_cache = {true, gb_sets:add(Tag, Cache)}};
  +        false -> S#state{tags = TagsN}
  +    end.
   
   -spec do_tag_notify(term(), tagname(), state()) -> state().
  -do_tag_notify(M, Tag, #state{tags = Tags, tag_cache = Cache} = S) ->
  -    {Pid, TagsN} = get_tag_pid(Tag, Tags, Cache),
  +do_tag_notify(M, Tag, #state{tags = Tags, tag_cache = {Valid, Cache}} = S) ->
  +    {Pid, TagsN} = get_tag_pid(Tag, Tags, {Valid, Cache}),
       gen_server:cast(Pid, {notify, M}),
  -    S#state{tags = TagsN,
  -            tag_cache = Cache =/= false andalso gb_sets:add(Tag, Cache)}.
  +    case Valid of
  +        true -> S#state{tags = TagsN, tag_cache = {true, gb_sets:add(Tag, Cache)}};
  +        false -> S#state{tags = TagsN}
  +    end.
   
   -spec do_update_nodes(nodes_update(), state()) -> state().
   do_update_nodes(NewNodes, #state{nodes = Nodes, tags = Tags} = S) ->
  
positive.code: % Tag request: Start a new tag server if one doesn't exist already. Forward
  % the request to the tag server.
  
  -spec get_tag_pid(tagname(), gb_tree(), false | gb_set()) ->
                           {pid(), gb_tree()}.
  get_tag_pid(Tag, Tags, Cache) ->
      case gb_trees:lookup(Tag, Tags) of
          none ->
              NotFound = (Cache =/= false
                          andalso not gb_sets:is_element(Tag, Cache)),
              {ok, Server} = ddfs_tag:start(Tag, NotFound),
              erlang:monitor(process, Server),
              {Server, gb_trees:insert(Tag, Server, Tags)};
  
negative.code:     {noreply, S#state{gc_stats = {Stats, now()}}};
  
  handle_cast({update_tag_cache, TagCache}, S) ->
      {noreply, S#state{tag_cache = {true, TagCache}}};
  
  handle_cast(refresh_tag_cache, #state{cache_refresher = Refresher} = S) ->
      Refresher ! refresh,
  