anchor.diff:  
   ;;; BACKQUOTE evaluation
   
  -;; BACKQUOTE-expand argument list with decremented sublevel.
  -(%set-atom-fun %quasiquote-subexpand
  -  #'((%gstype %gsbq %gsbqsub)
  -      (cons (cons %gstype
  -                  (%backquote (cdr (car %gsbq)) (- %gsbqsub 1)))
  -            (%backquote-1 (cdr %gsbq) %gsbqsub))))
  +(%set-atom-fun quasiquote?
  +  #'((x)
  +    (cond
  +	  ((consp x)
  +    	 (cond
  +	       ((eq (car x) 'quasiquote)	     t)
  +	       ((eq (car x) 'quasiquote-splice)  t))))))
  +
  +(%set-atom-fun %quasiquote-eval
  +  #'((%gsbq)
  +       (eval (car (cdr (car %gsbq))))))
   
   ;; Expand QUASIQUOTE.
   (%set-atom-fun %backquote-quasiquote
  -  #'((%gsbq %gsbqsub)
  +  #'((%gsbq)
       (cond
  -      ; No sublevel. Insert evaluated QUASIQUOTE value.
  -      ((= %gsbqsub 0)
  -          (cons (copy-tree (eval (car (cdr (car %gsbq)))))
  -                (%backquote-1 (cdr %gsbq) %gsbqsub)))
  +      ((not(quasiquote? (car (cdr (car %gsbq)))))
  +          (cons (copy-tree (%quasiquote-eval %gsbq))
  +                (%backquote-1 (cdr %gsbq))))
   
  -      (t  (%quasiquote-subexpand 'QUASIQUOTE %gsbq %gsbqsub)))))
  +      (t  (cons (copy-tree (car (cdr (car %gsbq))))
  +                (%backquote-1 (cdr %gsbq)))))))
   
   ;; Expand QUASIQUOTE-SPLICE.
   (%set-atom-fun %backquote-quasiquote-splice
  -  #'((%gsbq %gsbqsub)
  +  #'((%gsbq)
       (cond
  -      ; No sublevel. Splice evaluated QUASIQUOTE-SPLICE expression.
  -      ((= %gsbqsub 0)
  +      ((not(quasiquote? (car (cdr (car %gsbq)))))
             (#'((%gstmp)
                  (cond
                    ; Ignore NIL evaluation.
                    ((not %gstmp)
  -                      (%backquote (cdr %gsbq) %gsbqsub))
  +                      (%backquote (cdr %gsbq)))
                    ((atom %gstmp)
                         (%error "QUASIQUOTE-SPLICE: list expected"))
                    (t   (%nconc (copy-tree %gstmp)
  -                      (%backquote-1 (cdr %gsbq) %gsbqsub)))))
  -              (eval (car (cdr (car %gsbq))))))
  +                      		  (%backquote-1 (cdr %gsbq))))))
  +              (%quasiquote-eval %gsbq)))
   
  -      (t  (%quasiquote-subexpand 'QUASIQUOTE-SPLICE %gsbq %gsbqsub)))))
  +      (t  (cons (copy-tree (car (cdr (car %gsbq))))
  +                (%backquote-1 (cdr %gsbq)))))))
   
   ;; Expand BACKQUOTE arguments.
   (%set-atom-fun %backquote-1
  -  #'((%gsbq %gsbqsub)
  +  #'((%gsbq)
       (cond
         ; Return atom as is.
         ((atom %gsbq)
  
positive.code:       ; Return element if it's not a cons.
        ((atom (car %gsbq))
            (cons (car %gsbq)
                  (%backquote-1 (cdr %gsbq) %gsbqsub)))
  
        ; Do QUASIQUOTE expansion.
        ((eq (car (car %gsbq)) 'QUASIQUOTE)
            (%backquote-quasiquote %gsbq %gsbqsub))
  
        ; Do QUASIQUOTE-SPLICE expansion.
        ((eq (car (car %gsbq)) 'QUASIQUOTE-SPLICE)
            (%backquote-quasiquote-splice %gsbq %gsbqsub))
  
        ; Expand sublist and rest.
        (t  (cons (%backquote (car %gsbq) %gsbqsub)
                  (%backquote-1 (cdr %gsbq) %gsbqsub))))))
  
  ;; Expand BACKQUOTE, check for nested BACKQUOTE (and increment sublevel) first.
  (%set-atom-fun %backquote
    #'((%gsbq %gsbqsub)
      (cond
        ; Return atom as is.
        ((atom %gsbq)
  
negative.code:       ; Enter new backquote level.
        ((eq (car %gsbq) 'BACKQUOTE)
       	  (cons 'BACKQUOTE
                  (%backquote (cdr %gsbq))))
  
        ; No new backquote level, continue normally.
        (t  (%backquote-1 %gsbq)))))
  
  ;; Initialise expansion.
  (%set-atom-fun backquote
    (special (%gsbq) (%backquote %gsbq)))
  