anchor.diff:              ret_expr(F(Func, As), Bs0, RBs)
       end.
   
  +do_apply(Mod, Func, As, Bs0, Ef, RBs) ->
  +    case Ef of
  +        none when RBs =:= value ->
  +            %% Make tail recursive calls when possible.
  +            apply(Mod, Func, As);
  +        none ->
  +            ret_expr(apply(Mod, Func, As), Bs0, RBs);
  +        {value,F} when RBs =:= value ->
  +            F({Mod,Func}, As);
  +        {value,F} ->
  +            ret_expr(F({Mod,Func}, As), Bs0, RBs)
  +    end.
  +
   %% eval_lc(Expr, [Qualifier], Bindings, LocalFunctionHandler, 
   %%         ExternalFuncHandler, RetBindings) ->
   %%	{value,Value,Bindings} | Value
  
positive.code:     {reverse(Vs),Bs}.
  
  eval_op(Op, Arg1, Arg2, Bs, Ef, RBs) ->
      do_apply({erlang,Op}, [Arg1,Arg2], Bs, Ef, RBs).
  
  eval_op(Op, Arg, Bs, Ef, RBs) ->
      do_apply({erlang,Op}, [Arg], Bs, Ef, RBs).
  
  %% if_clauses(Clauses, Bindings, LocalFuncHandler, ExtFuncHandler, RBs)
  
  
negative.code:         true ->
              bif(F, As, Bs3, Ef, RBs);
          false ->
              do_apply(M, F, As, Bs3, Ef, RBs)
      end;
  expr({call,_,{atom,_,Func},As0}, Bs0, Lf, Ef, RBs) ->
      case erl_internal:bif(Func, length(As0)) of
  