anchor.diff:    (declare (ignore documentation))
     `(progn
        (eval-when (:compile-toplevel)
  -       (setf (sicl-env:special-variable ',name *global-environment* nil)
  +       (setf (sicl-env:special-variable
  +	      ',name
  +	      sicl-env:*global-environment*
  +	      nil)
   	     nil))
        (eval-when (:load-toplevel :execute)
  -       (setf (sicl-env:special-variable ',name *global-environment* t)
  +       (setf (sicl-env:special-variable
  +	      ',name
  +	      sicl-env:*global-environment*
  +	      t)
   	     ,initial-value))))
   
   ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  
positive.code:   (if initial-value-p
        `(progn
  	 (eval-when (:compile-toplevel)
  	   (setf (sicl-env:special-variable ',name *global-environment* nil)
  		 nil))
  	 (eval-when (:load-toplevel :execute)
  	   (unless (sicl-env:boundp ',name *global-environment*)
  	     (setf (sicl-env:special-variable ',name *global-environment* t)
  		   ,initial-value))))
        `(eval-when (:compile-toplevel :load-toplevel :execute)
  	 (setf (sicl-env:special-variable ',name *global-environment* nil)
  	       nil))))
  
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  
negative.code: (defmacro defconstant (name initial-value &optional documentation)
    (declare (ignore documentation))
    `(eval-when (:compile-toplevel :load-toplevel :execute)
       (setf (sicl-env:constant-variable
  	    ',name
  	    sicl-env:*global-environment*)
  	   ,initial-value)))
  
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  