anchor.diff:  			     side-effects-p free-variables)
         (package-as-body)
       (values (case (length body)
  -	      (0 `nil)
  +	      (0 `(values))
   	      (1 (car body))
   	      (t `(progn ,@body)))
   	    argument-types result-types side-effects-p
  
positive.code:   form					; a Lisp form OR
    literal				; a BST symbol or function body
    types
    side-effects-p)
  
  (defvar *form-bindings* ()
    "A list of BINDINGs that keeps track of all forms that cannot be
  
negative.code: 	(funcall special-form)
  	(let* ((bst-function (get-bst-function function-name))
  	       (arg-types (bst-function-argument-types bst-function))
  	       (side-effects-p (bst-function-side-effects-p bst-function))
  	       (arg-forms (nreverse
  			   (mapcar (lambda (type)
  				     (multiple-value-bind (form actual-type side-eff)
  					 (pop-form type :need-variable nil)
  				       (declare (ignore actual-type))
  				       (setq side-effects-p
  					     (max-side-effects side-effects-p side-eff))
  				       form))
  				   (reverse arg-types))))
  	       (result-types (bst-function-result-types bst-function)))
  	  (cond
  	    ((bst-function-lisp-form-maker bst-function)
  	     (push-form (make-mvform :form (apply (bst-function-lisp-form-maker bst-function)
  						  arg-forms)
  				     :types result-types
  				     :side-effects-p side-effects-p)))
  	    (t				; normal function call
  	     (push-form (make-mvform :form (cons (bst-function-lisp-name bst-function)
  						 arg-forms)
  				     :types result-types
  				     :side-effects-p (bst-function-side-effects-p bst-function)))))))))
  
  (defun compile-body (body)
    (let ((*currently-compiled-body* body))
  