anchor.diff:  
   -spec lookup(atom(), any()) -> {ok, any()} | any().
   lookup(Name, Key) ->
  -    lookup(Name, Key, undefined).
  -
  --spec lookup(atom(), any(), read_fun() | undefined) -> {ok, any()} | any().
  -lookup(Name, Key, ReadFun) ->
  +    lookup(Name, Key, error).
  +
  +-spec lookup(atom(), any(), read_fun() | term()) -> {ok, any()} | any().
  +lookup(Name, Key, Return) ->
       try ets:lookup(Name, Key) of
   	[{_, Val, _} = Obj] ->
   	    delete_if_expired(Name, Obj),
   	    Val;
  -	[] when ReadFun /= undefined ->
  +	[] when is_function(Return) ->
   	    Ver = get_counter(Name),
  -	    Val = case ReadFun() of
  -		      {ok, Val1} -> {ok, Val1};
  -		      error -> error;
  -		      {error, notfound} -> error;
  -		      Other -> {error, Other}
  -		  end,
  -	    case Val of
  -		{error, Reason} ->
  -		    Reason;
  -		_ ->
  +	    case case Return() of
  +		     {ok, _} = Ret -> {cache, Ret};
  +		     error -> {cache, error};
  +		     {error, notfound} -> {cache, error};
  +		     {cache, _} = Ret -> Ret;
  +		     {nocache, _} = Ret -> Ret;
  +		     Other -> {nocache, Other}
  +		 end of
  +		{nocache, Val} ->
  +		    Val;
  +		{cache, Val} ->
   		    case get_counter(Name) of
   			Ver ->
   			    do_insert(new, Name, {Key, Val, current_time()});
  
positive.code: 			 true
  		 end,
      if NeedUpdate ->
  	    NewVal = case UpdateFun() of
  			 ok -> Val;
  			 {ok, Val1} -> {ok, Val1};
  			 error -> error;
  			 {error, notfound} -> error;
  			 Other -> {error, Other}
  		     end,
  	    case NewVal of
  		{error, Reason} ->
  		    Reason;
  		_ ->
  		    lists:foreach(
  		      fun(Node) when Node /= node() ->
  			      send({Name, Node}, {delete, Key});
  
negative.code: %% API
  -export([new/1, new/2, start_link/2, delete/1, delete/2, delete/3,
  	 lookup/2, lookup/3, insert/3, insert/4, insert_new/3, insert_new/4,
  	 update/4, update/5, setopts/2, clear/1, clear/2, untag/1,
  	 clean/1, clean/2, filter/2, fold/3, all/0, info/1, info/2]).
  %% gen_server callbacks
  -export([init/1, handle_call/3, handle_cast/2, handle_info/2,
  