anchor.diff:  	    (apply #'max-side-effects
   		   (make-instance 'side-effects :assigned-variables assigned-variables)
   		   (mapcar #'mvform-side-effects mvforms))))
  -      (case (length *borrowed-variables*)
  +      (case (length psetq-args)
   	(0 nil)
  -	(1 (push-mvform :form `(setq ,@psetq-args)
  +	(2 (push-mvform :form `(setq ,@psetq-args)
   			:types () 
   			:side-effects side-effects))
   	(t (push-mvform :form `(psetq ,@psetq-args)
   			:types ()
  -			:side-effects side-effects))))
  +			:side-effects side-effects)))
  +      (/ (length psetq-args) 2))))
  +
  +(defun bst-compile-literal-as-while-body (literal loop-vars loop-var-types)
  +  "Compile a BST function LITERAL, which is a symbol, designating a
  +BST function, or a list (a function body).  Return five values: a Lisp
  +BODY, LOOP-VARS, LOOP-VAR-TYPES, INIT-TYPES and SIDE-EFFECTS."
  +  (let ((*form-stack*
  +	 (mapcar (lambda (var type)
  +		   (make-mvform :form var :types (list type)))
  +		 loop-vars loop-var-types))
  +	(*borrowed-variables*
  +	 (mapcar (lambda (var type)
  +		   (make-variable :name var :type type))
  +		 loop-vars loop-var-types))
  +	(*form-bindings* ())
  +	(*compiling-while-body* t))
  +    (compile-literal literal)
  +    (assign-loop-variables)
       (multiple-value-bind (body arg-types res-types
   			       side-effects free-variables)
   	(package-as-body)
  
positive.code:     (setq *form-stack* (nconc (nreverse mvforms)
  			      *form-stack*))))
  
  (defun pop-form (type &key (need-variable nil) (when-empty :borrow)
  		 (assigned-variables ()))
    "Pop a Lisp form delivering a single value of given TYPE from
  
negative.code: 	  (cond
  	    ((bst-function-constant-p fun)
  	     ;; do nothing
  	     (pop-single-value-form type :need-variable :if-side-effects))
  	    ((setq assoc (assoc name *lexical-variables* :test 'string-equal))
  	     (let ((var-name (variable-name (cdr assoc)))
  		   (value-mvform (pop-single-value-form type :need-variable nil)))
  	       (push-mvform :form `(setq ,var-name
  				    ,(mvform-form value-mvform))
  			    :types ()
  