anchor.diff:      case lfe_lib:is_core_form(Name) of
   	true -> no;				%Don't expand core forms
   	false ->
  +	    St = #mac{expand=false},		%Default state
   	    case get_mbinding(Name, Env) of
   		{yes,Def} ->
   		    %% User macro bindings.
  -		    {Exp,_} = exp_macro(Call, Def, Env, #mac{expand=false}),
  +		    {Exp,_} = exp_userdef_macro(Call, Def, Env, St),
   		    {yes,Exp};
   		no ->
   		    %% Default macro bindings.
  -		    case exp_predef(Call, Env, #mac{}) of
  +		    case exp_predef_macro(Call, Env, St) of
   			{yes,Exp,_} -> {yes,Exp};
   			no -> no
   		    end
  
positive.code: exp_predef([cadr,E], _, St) -> {yes,[car,[cdr,E]],St};
  exp_predef([cdar,E], _, St) -> {yes,[cdr,[car,E]],St};
  exp_predef([cddr,E], _, St) -> {yes,[cdr,[cdr,E]],St};
  %% Arithmetic operations.
  exp_predef(['+'|Es], _, St) ->
      Exp = case Es of
  	      [A] -> exp_bif('+', [A]);
  	      [A|As] -> foldl(fun (E, Acc) -> exp_bif('+', [Acc,E]) end, A, As);
  	      [] -> 0				%Identity
  	  end,
      {yes,Exp,St};
  exp_predef(['-'|Es], _, St) ->
      Exp = case Es of
  	      [A] -> exp_bif('-', [A]);
  	      [A|As] -> foldl(fun (E, Acc) -> exp_bif('-', [Acc,E]) end, A, As)
  	  end,
      {yes,Exp,St};
  exp_predef(['*'|Es], _, St) ->
      Exp = case Es of
  	      [A] -> exp_bif('*', [1,A]);	%Check if number
  	      [A|As] -> foldl(fun (E, Acc) -> exp_bif('*', [Acc,E]) end, A, As);
  	      [] -> 1				%Identity
  	  end,
      {yes,Exp,St};
  exp_predef(['/'|Es], _, St) ->
      Exp = case Es of
  	      [A] -> exp_bif('/', [1,A]);
  	      [A|As] -> foldl(fun (E, Acc) -> exp_bif('/', [Acc,E]) end, A, As)
  	  end,
      {yes,Exp,St};
  exp_predef([backquote,Bq], _, St) ->		%We do this here.
      {yes,bq_expand(Bq),St};
  exp_predef(['++'|Abody], _, St) ->
  
negative.code: 			   end, B0, Env, St1),
      {['try',E1|B1],St2}.
  
  %% exp_userdef_macro(Call, Def, Env, State) -> {Exp,State}.
  %%  Evaluate the macro definition by applying it to the call args. The
  %%  definition is either a lambda or match-lambda, expand it and apply
  %%  it to argument list.
  
  exp_userdef_macro([Mac|Args], Def0, Env, St0) ->
      %% lfe_io:format("macro: ~p\n", [Def0]),
  %%	Exp = lfe_eval:apply(Def1, [Args], Env),
  %%	{Exp,St1}.
  