diff --git a/code/macros.lisp b/code/macros.lisp
index e3cbe452372c8c8f0dc45fef2981f4b5534451f9..e039f1de44239c868cb96d33ee5e33356876e747 100644
--- a/code/macros.lisp
+++ b/code/macros.lisp
@@ -7,7 +7,7 @@
 ;;; Scott Fahlman or slisp-group@cs.cmu.edu.
 ;;;
 (ext:file-comment
-  "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/macros.lisp,v 1.23 1991/05/08 23:54:08 ram Exp $")
+  "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/macros.lisp,v 1.24 1991/05/24 16:58:02 ram Exp $")
 ;;;
 ;;; **********************************************************************
 ;;;
@@ -1447,27 +1447,27 @@
 ;;; matches the specified context.
 ;;;
 (defun evaluate-declaration-context (context name parent)
-  (let ((base (if (and (consp name) (consp (cdr name)))
-		  (cadr name)
-		  name)))
+  (let* ((base (if (and (consp name) (consp (cdr name)))
+		   (cadr name)
+		   name))
+	 (package (and (symbolp base) (symbol-package base))))
     (if (atom context)
-	(let ((package (and (symbolp base) (symbol-package base))))
-	  (multiple-value-bind (ignore how)
-			       (if package
-				   (find-symbol (symbol-name base) package)
-				   (values nil nil))
-	    (declare (ignore ignore))
-	    (case context
-	      (:internal (eq how :internal))
-	      (:external (eq how :external))
-	      (:uninterned (and (symbolp base) (not package)))
-	      (:anonymous (not name))
-	      (:macro (eq parent 'defmacro))
-	      (:function (member parent '(defun labels flet function)))
-	      (:global (member parent '(defun defmacro function)))
-	      (:local (member parent '(labels flet)))
-	      (t
-	       (error "Unknown declaration context: ~S." context)))))
+	(multiple-value-bind (ignore how)
+			     (if package
+				 (find-symbol (symbol-name base) package)
+				 (values nil nil))
+	  (declare (ignore ignore))
+	  (case context
+	    (:internal (eq how :internal))
+	    (:external (eq how :external))
+	    (:uninterned (and (symbolp base) (not package)))
+	    (:anonymous (not name))
+	    (:macro (eq parent 'defmacro))
+	    (:function (member parent '(defun labels flet function)))
+	    (:global (member parent '(defun defmacro function)))
+	    (:local (member parent '(labels flet)))
+	    (t
+	     (error "Unknown declaration context: ~S." context))))
 	(case (first context)
 	  (:or
 	   (loop for x in (rest context)
@@ -1483,6 +1483,10 @@
 	   (let ((name (concatenate 'string "$" (string base) "$")))
 	     (loop for x in (rest context)
 	       thereis (search (string x) name))))
+	  (:package
+	   (and package
+		(loop for x in (rest context)
+		  thereis (eq (find-package (string x)) package))))
 	  (t
 	   (error "Unknown declaration context: ~S." context))))))