anchor.diff:  	(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)
  -				     ;; `:need-variable nil' is sufficient
  -				     ;; but might want to say :if-side-effects
  -				     ;; for aesthetic reasons:
  -				     (pop-form type :need-variable nil
  -					       ;;:if-side-effects
  -					       ))
  +				     (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 (bst-function-side-effects-p 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)))))))))
  +						 arg-forms)
  +				     :types result-types
  +				     :side-effects-p (bst-function-side-effects-p bst-function)))))))))
   
   (defun compile-body (body)
     (let ((*currently-compiled-body* body))
  
positive.code: 
  ;;; Packaging the computed data
  
  (defun max-side-effects (a b)
    "Compute the maximum of the side-effects A and B."
    (case a
      ((nil) b)
      (:assignment :assignment)
      (t (if (eql b :assignment) :assignment a))))
  
  (defun package-as-body ()
    "Build a Lisp body corresponding to the computation captured in
  
negative.code:   form					; a Lisp form OR
    literal				; a BST symbol or function body
    types
    side-effects-p
    used-functions
    assigned-functions)
  
  (defvar *form-bindings* ()
    "A list of BINDINGs that keeps track of all forms that cannot be
  