anchor.diff:      end, {0,0, Tree}, Data).
   
   %% manipulators
  -
  -sort_mfa(Bpfs, ascending) when is_list(Bpfs) ->
  +sort_mfa(Bpfs, mfa) when is_list(Bpfs) ->
       lists:sort(fun
  -	    ({_,{_,A}}, {_,{_,B}}) when A > B -> true;
  +	    ({A,_}, {B,_}) when A < B -> true;
   	    (_, _) -> false
   	end, Bpfs);
  -sort_mfa(Bpfs, descending) when is_list(Bpfs) ->
  +sort_mfa(Bpfs, time) when is_list(Bpfs) ->
  +    lists:sort(fun
  +	    ({_,{A,_}}, {_,{B,_}}) when A < B -> true;
  +	    (_, _) -> false
  +	end, Bpfs);
  +sort_mfa(Bpfs, calls) when is_list(Bpfs) ->
       lists:sort(fun
   	    ({_,{_,A}}, {_,{_,B}}) when A < B -> true;
   	    (_, _) -> false
   	end, Bpfs);
  -sort_mfa(Bpfs, _) when is_list(Bpfs) -> sort_mfa(Bpfs, ascending).
  +sort_mfa(Bpfs, _) when is_list(Bpfs) -> sort_mfa(Bpfs, calls).
   
   filter_mfa(Bpfs, Ts) when is_list(Ts) ->
       filter_mfa(Bpfs, [], proplists:get_value(calls, Ts, 0), proplists:get_value(time, Ts, 0));
  
positive.code: filter_mfa([{_, {C, T}}=Bpf|Bpfs], Out, Ct, Tt) when C >= Ct, T >= Tt -> filter_mfa(Bpfs, [Bpf|Out], Ct, Tt);
  filter_mfa([_|Bpfs], Out, Ct, Tt) -> filter_mfa(Bpfs, Out, Ct, Tt).
  
  %% strings and format
  
  s({M,F,A}) -> s("~w:~w/~w",[M,F,A]);
  s(Term) -> s("~p", [Term]).
  
negative.code: 
  %% analyze
  
  handle_call({analyze, _, _}, _, #state{ bpd = #bpd{ p = {0,nil}, us = 0, n = 0} = Bpd } = S) when is_record(Bpd, bpd) ->
      {reply, nothing_to_analyze, S};
  
  