anchor.diff:  %%        [[[binary,P,Brest]],Rest],                %Matches pattern
   %%        [[[binary,Brest]],End]]]],                %No match
   %%       [H,Gen]],St3};
  +
  +%% mapfoldl2(Fun, Acc1, Acc2, List) -> {List,Acc1,Acc2}.
  +%%  Like normal mapfoldl but with 2 accumulators.
  +
  +mapfoldl2(Fun, A0, B0, [E0|Es0]) ->
  +    {E1,A1,B1} = Fun(E0, A0, B0),
  +    {Es1,A2,B2} = mapfoldl2(Fun, A1, B1, Es0),
  +    {[E1|Es1],A2,B2};
  +mapfoldl2(_, A, B, []) -> {[],A,B}.
  
positive.code:     Mdefs = map(fun ([Name|Rules]) -> exp_rules(Name, [], Rules) end, Defs),
      {yes,['let-macro',Mdefs|Body],St};
  exp_predef([prog1|Body], _, St0) ->
      [First|Rest] = Body,                        %Catch bad form here
      {V,St1} = new_symb(St0),
      {yes,['let',[[V,First]]|Rest ++ [V]],St1};
  exp_predef([prog2|Body], _, St0) ->
      [First,Second|Rest] = Body,                 %Catch bad form here
      {V,St1} = new_symb(St0),
      {yes,['let',[[V,[progn,First,Second]]]|Rest ++ [V]],St1};
  %% This has to go here for the time being so as to be able to macro
  %% expand body.
  exp_predef(['match-spec'|Body], Env, St0) ->
  
negative.code: %% Errors
  format_error({bad_form,Type}) ->
      lfe_io:format1("bad form: ~w", [Type]);
  format_error({bad_env_form,Type}) ->
      lfe_io:format1("bad environment form: ~w", [Type]);
  format_error({expand_macro,Call,_}) ->
      %% Can be very big so only print limited depth.
      lfe_io:format1("error expanding ~P", [Call,10]).
  