anchor.diff:      (loop for (name expansion) in (cadr form)
   	  do (setf new-env
   		   (sicl-env:add-symbol-macro-entry new-env name expansion)))
  -    (convert `(progn ,@(cddr form)) new-env)))
  +    ;; According to section 3.2.3.1 of the HyperSpec, SYMBOL-MACROLET
  +    ;; processes its subforms the same way as the form itself.
  +    (let ((*top-level-subform-p* *top-level-form-p*))
  +      (convert `(progn ,@(cddr form)) new-env))))
   
   ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
   ;;;
  
positive.code: (defmethod convert-compound
      ((head (eql 'progn)) form environment)
    (sicl-code-utilities:check-form-proper-list form)
    (sicl-ast:make-progn-ast
     (convert-sequence (cdr form) environment)))
  
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  ;;;
  
negative.code:       (sicl-code-utilities:separate-ordinary-body (cdr form))
      (let ((new-env (sicl-env:augment-environment-with-declarations
  		    env declarations)))
        ;; According to section 3.2.3.1 of the HyperSpec, LOCALLY
        ;; processes its subforms the same way as the form itself.
        (let ((*top-level-subform-p* *top-level-form-p*))
  	(sicl-ast:make-progn-ast
  	 (convert-sequence forms new-env))))))
  
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  ;;;
  ;;; Converting MACROLET.
  
  ;; According to section 3.2.3.1 of the HyperSpec, MACROLET processes
  ;; its subforms the same way as the form itself.
  
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  ;;;
  