diff --git a/src/clojure/contrib/pred.clj b/src/clojure/contrib/pred.clj
index 9760ec0..7a50d76 100644
--- a/src/clojure/contrib/pred.clj
+++ b/src/clojure/contrib/pred.clj
@@ -62,7 +62,7 @@
   same name can be resolved and has its :macro metadata
   set"
   [x]
-  `(and (fn? ~x) (boolean (:macro ^#'~x))))
+  `(and (fn? '~x) (boolean (:macro (meta (var ~x))))))
 
 ;; integer?
 ;; even?
diff --git a/src/clojure/contrib/test.clj b/src/clojure/contrib/test.clj
new file mode 100644
index 0000000..dc9fec7
--- /dev/null
+++ b/src/clojure/contrib/test.clj
@@ -0,0 +1,29 @@
+;;  Copyright (c) Stuart Halloway. All rights reserved. The use and
+;;  distribution terms for this software are covered by the Common Public
+;;  License 1.0 (http://opensource.org/licenses/cpl.php) which can be found
+;;  in the file CPL.TXT at the root of this distribution. By using this
+;;  software in any fashion, you are agreeing to be bound by the terms of
+;;  this license. You must not remove this notice, or any other, from this
+;;  software.
+;;
+;;  clojure.contrib.test
+;;
+;;  Tests for the facilities provided by Clojure-Contrib
+;;
+
+(ns clojure.contrib.test
+  (:use clojure.contrib.test-is))
+
+(def tests [:pred])
+
+(defn test-name
+  [test]
+  (symbol (str "clojure.contrib.test." (name test))))
+
+(doseq [test tests]
+  (require (test-name test)))
+
+(binding [*test-out* (java.io.PrintWriter. *out*)]
+  (doseq [test tests]
+    (println "\n\n=====>" test)
+    (run-tests (test-name test))))
diff --git a/src/clojure/contrib/test/pred.clj b/src/clojure/contrib/test/pred.clj
new file mode 100644
index 0000000..de778ac
--- /dev/null
+++ b/src/clojure/contrib/test/pred.clj
@@ -0,0 +1,21 @@
+;;  Copyright (c) Stuart Halloway. All rights reserved. The use and
+;;  distribution terms for this software are covered by the Common Public
+;;  License 1.0 (http://opensource.org/licenses/cpl.php) which can be found
+;;  in the file CPL.TXT at the root of this distribution. By using this
+;;  software in any fashion, you are agreeing to be bound by the terms of
+;;  this license. You must not remove this notice, or any other, from this
+;;  software.
+;;
+
+(ns clojure.contrib.test.pred
+  (:use clojure.contrib.test-is)
+  (:use clojure.contrib.pred))
+
+;; Predicates
+
+(deftest macro-predicate
+  (each=
+   (macro? dosync) true
+   (macro? println) false
+  ))
+
