diff --git a/ansi-tests/typep.lsp b/ansi-tests/typep.lsp
index c5c7a9c568fc469371a9d1ee0da01d42855bfb15..5fc8dfdbed53111cb478ca7acb35fad861278fe0 100644
--- a/ansi-tests/typep.lsp
+++ b/ansi-tests/typep.lsp
@@ -146,3 +146,30 @@
      (notnot (typep (incf i) '(and (integer 0 10) (integer -5 6))))
      i))
   t 1)
+
+(defun typep.19-fn (reps &optional (prob .5))
+  (let* ((vec "abcdefghijklmnopqrstuvwxyz"))
+    (flet ((%make-random-type
+	    ()
+	    `(and character (member ,@(loop for e across vec
+					    when (< (random 1.0) prob)
+					    collect e)))))
+      (loop 
+       for t1 = (%make-random-type)
+       for t2 = (%make-random-type)
+       for t3 = `(and ,t1 ,t2)
+       for result1 = (loop for e across vec
+			   when (if (typep e t3)
+				    (or (not (typep e t1)) (not (typep e t2)))
+				  (and (typep e t1) (typep e t2)))
+			   collect e)
+       repeat reps
+       when result1
+       nconc (list result1 t1 t2 t3)))))
+
+(eval-when (:load-toplevel) (compile 'typep.19-fn))
+
+(deftest typep.19 (typep.19-fn 1000) nil)
+
+	    
+