anchor.diff:                                          `(setf (car ,q.) nil ,q. (cdr ,q.))))
                              nil)
                           (let ((,lock. (resource-object-lock ,ro.)))
  -                          (atomic-decf (the fixnum (car ,lock.)))))))) )
  +                          (resource-atomic-decf (the fixnum (car ,lock.)))))))) )
           ;;
           (let* ((r.           (gensym "R."))
                  (q.           (gensym "Q."))
  
positive.code:                       (let ((,lock. (resource-object-lock ,ro.)))
                          (declare (type cons ,lock.))
                          (when (= 0 (the fixnum (car ,lock.)))
                            (atomic-incf (the fixnum (car ,lock.)))
                            (cond ((and (= 1 (the fixnum 
                                               (locally
                                                 #+excl (declare (optimize (safety 3))) ;EXCL bug
  
negative.code:                (resource-object-object resource-object)
                 (not (zerop (car (resource-object-lock resource-object))))
                 name))))
  
  (defparameter *resource-atomic-lock*
    (clim-sys:make-lock "atomic incf/decf"))
  
  (defmacro resource-atomic-incf (place)
    `(clim-sys:with-lock-held (*resource-atomic-lock*)
         (incf ,place)))
  
  (defmacro resource-atomic-decf (place)
    `(clim-sys:with-lock-held (*resource-atomic-lock*)
         (decf ,place)))
  
  (defmacro defresource (name parameters
                              &key (constructor (error "~S argument is required" :constructor))
  