anchor.diff:  
   function_1({#c_var{name={F,Arity}}=Name,B0}) ->
       try
  -	B = expr(B0, value, sub_new()),			%This must be a fun!
  +	B = find_fixpoint(fun(Core) ->
  +				  %% This must be a fun!
  +				  expr(Core, value, sub_new())
  +			  end, B0, 20),
   	{Name,B}
       catch
   	Class:Error ->
   	    Stack = erlang:get_stacktrace(),
   	    io:fwrite("Function: ~w/~w\n", [F,Arity]),
   	    erlang:raise(Class, Error, Stack)
  +    end.
  +
  +find_fixpoint(_OptFun, Core, 0) ->
  +    Core;
  +find_fixpoint(OptFun, Core0, Max) ->
  +    case OptFun(Core0) of
  +	Core0 -> Core0;
  +	Core -> find_fixpoint(OptFun, Core, Max-1)
       end.
   
   %% body(Expr, Sub) -> Expr.
  
positive.code: sub_new(#sub{}=Sub) ->
      Sub#sub{v=orddict:new(),t=#{}}.
  
  sub_new_preserve_types(#sub{}=Sub) ->
      Sub#sub{v=orddict:new()}.
  
  sub_get_var(#c_var{name=V}=Var, #sub{v=S}) ->
      case orddict:find(V, S) of
  	{ok,Val} -> Val;
  
negative.code:     case Ctxt of
  	effect ->
  	    add_warning(Map, useless_building),
  	    make_effect_seq(Es, Sub);
  	value ->
  	    V = expr(V0, Ctxt, Sub),
  	    ann_c_map(Anno,V,Es)
  