anchor.diff:           (vararg (attr-ref attrs 'vararg)))
       (if vararg
           (quasiquote
  -          (begin (((unquote vararg)))
  -            (define (unquote vararg)
  -                (call () (ref handle-varargs) (quote (unquote nparams))
  -                      (arg-count ()) (raw-args-address ())))
  -            (unquote-splicing body)))
  +          (varargs-return () (arg-count ())
  +            (begin (((unquote vararg)))
  +                   (define (unquote vararg)
  +                       (call () (ref handle-varargs) (quote (unquote nparams))
  +                             (arg-count ()) (raw-args-address ())))
  +                   (unquote-splicing body))))
           (quasiquote
  -          (if () (check-arg-count ((nparams . (unquote nparams))))
  -              (begin () (unquote-splicing body))
  -              (call () (ref arity-mismatch)
  -                    (quote (unquote nparams))
  -                    (arg-count ())))))))
  +          (return ((nparams . (unquote nparams)))
  +            (if () (check-arg-count ((nparams . (unquote nparams))))
  +                (begin () (unquote-splicing body))
  +                (call () (ref arity-mismatch)
  +                      (quote (unquote nparams))
  +                      (arg-count ()))))))))
   
   (define-trivial-walker reg-use (dest-type))
   (define-trivial-walker codegen (dest in-frame-base out-frame-base regs out))
  
positive.code:   (collect-closures program)
    (introduce-boxes program)
    (lambda-label program)
    (codegen-program program)
    ;(format~ true "~S~%" program)
    )
  
  (define keywords-1
  
negative.code:           (emit-indirect-call out)))
  
      (emit-restore-%func out)
      (emit-convert-value out %funcres dest in-frame-base out-frame-base)))
  
  ;;; Strings and vectors
  
  