diff --git a/changelog b/changelog
index 71d6aa2..a6ab366 100644
--- a/changelog
+++ b/changelog
@@ -1,3 +1,8 @@
+20090804 tpd src/axiom-website/patches.html 20090804.01.tpd.patch
+20090804 tpd src/interp/Makefile remove ggreater.lisp
+20090804 tpd src/interp/debugsys.lisp remove ggreater.lisp reference
+20090804 tpd src/interp/vmlisp.lisp merged with ggreater.lisp
+20090804 tpd src/interp/ggreater.lisp removed, merged with vmlisp.lisp
 20090803 tpd src/axiom-website/patches.html 20090803.01.tpd.patch
 20090803 tpd Makefile make parallel make the default (bug 7202)
 20090802 tpd src/axiom-website/patches.html 20090802.01.tpd.patch
diff --git a/src/axiom-website/patches.html b/src/axiom-website/patches.html
index 52c89f0..cd4b87a 100644
--- a/src/axiom-website/patches.html
+++ b/src/axiom-website/patches.html
@@ -1736,8 +1736,10 @@ In process, not yet released<br/><br/>
   <hr>
 <a href="patches/20090802.01.tpd.patch">20090802.01.tpd.patch</a>
 src/interp/vmlisp.lisp rewrite to remove chunks<br/>
-<a href="patches/20090803.01.tpd.patch">20090802.01.tpd.patch</a>
+<a href="patches/20090803.01.tpd.patch">20090803.01.tpd.patch</a>
 Makefile make parallel make the default (bug 7202)<br/>
+<a href="patches/20090804.01.tpd.patch">20090804.01.tpd.patch</a>
+vmlisp.lisp and ggreater.lisp merged<br/>
 
  </body>
 </html>
diff --git a/src/interp/Makefile.pamphlet b/src/interp/Makefile.pamphlet
index 83946a9..2ff69b5 100644
--- a/src/interp/Makefile.pamphlet
+++ b/src/interp/Makefile.pamphlet
@@ -127,7 +127,7 @@ We do, however, care about the macros as these will be
 expanded in later compiles. All macros are assumed to be
 in this list of files.
 <<environment>>=
-DEP= ${MID}/vmlisp.lisp    ${MID}/ggreater.lisp \
+DEP= ${MID}/vmlisp.lisp    \
      ${MID}/hash.lisp      ${MID}/bootfuns.lisp \
      ${MID}/union.lisp     ${MID}/nlib.lisp \
      ${MID}/macros.lisp    ${MID}/comp.lisp \
@@ -194,7 +194,6 @@ OBJS= ${OUT}/vmlisp.${O}      ${OUT}/hash.${O} \
       ${OUT}/g-boot.${O}      ${OUT}/g-cndata.${O} \
       ${OUT}/g-error.${O}     ${OUT}/g-opt.${O} \
       ${OUT}/g-timer.${O}     ${OUT}/g-util.${O} \
-      ${OUT}/ggreater.${O}    \
       ${OUT}/http.${O} \
       ${OUT}/hypertex.${O}    ${OUT}/i-analy.${O} \
       ${OUT}/i-code.${O}      ${OUT}/i-coerce.${O} \
@@ -444,7 +443,7 @@ DOCFILES=${DOC}/alql.boot.dvi \
 	 ${DOC}/format.boot.dvi ${DOC}/fortcall.boot.dvi \
 	 ${DOC}/functor.boot.dvi ${DOC}/g-boot.boot.dvi \
 	 ${DOC}/g-cndata.boot.dvi ${DOC}/g-error.boot.dvi \
-	 ${DOC}/ggreater.lisp.dvi ${DOC}/g-opt.boot.dvi \
+         ${DOC}/g-opt.boot.dvi \
 	 ${DOC}/g-timer.boot.dvi \
 	 ${DOC}/g-util.boot.dvi ${DOC}/hashcode.boot.dvi \
 	 ${DOC}/hash.lisp.dvi ${DOC}/htcheck.boot.dvi \
@@ -1304,41 +1303,6 @@ ${DOC}/fortcall.boot.dvi: ${IN}/fortcall.boot.pamphlet
 
 @
 
-\subsection{ggreater.lisp \cite{19}}
-<<ggreater.o (OUT from MID)>>=
-${OUT}/ggreater.${O}: ${MID}/ggreater.lisp
-	@ echo 57 making ${OUT}/ggreater.${O} from ${MID}/ggreater.lisp
-	@ ( cd ${MID} ; \
-	  if [ -z "${NOISE}" ] ; then \
-	   echo '(progn  (compile-file "${MID}/ggreater.lisp"' \
-            ':output-file "${OUT}/ggreater.${O}") (${BYE}))' | ${DEPSYS} ; \
-	  else \
-	   echo '(progn  (compile-file "${MID}/ggreater.lisp"' \
-            ':output-file "${OUT}/ggreater.${O}") (${BYE}))' | ${DEPSYS} \
-            >${TMP}/trace ; \
-	  fi )
-
-@
-<<ggreater.lisp (MID from IN)>>=
-${MID}/ggreater.lisp: ${IN}/ggreater.lisp.pamphlet
-	@ echo 58 making ${MID}/ggreater.lisp from ${IN}/ggreater.lisp.pamphlet
-	@ (cd ${MID} ; \
-	   ${TANGLE} ${IN}/ggreater.lisp.pamphlet >ggreater.lisp )
-
-@
-<<ggreater.lisp.dvi (DOC from IN)>>=
-${DOC}/ggreater.lisp.dvi: ${IN}/ggreater.lisp.pamphlet 
-	@echo 59 making ${DOC}/ggreater.lisp.dvi \
-                 from ${IN}/ggreater.lisp.pamphlet
-	@(cd ${DOC} ; \
-	cp ${IN}/ggreater.lisp.pamphlet ${DOC} ; \
-	${DOCUMENT} ${NOISE} ggreater.lisp ; \
-	rm -f ${DOC}/ggreater.lisp.pamphlet ; \
-	rm -f ${DOC}/ggreater.lisp.tex ; \
-	rm -f ${DOC}/ggreater.lisp )
-
-@
-
 \subsection{hash.lisp \cite{20}} 
 <<hash.o (OUT from MID)>>=
 ${OUT}/hash.${O}: ${MID}/hash.lisp
@@ -7550,10 +7514,6 @@ clean:
 <<g-error.clisp (MID from IN)>>
 <<g-error.boot.dvi (DOC from IN)>>
 
-<<ggreater.o (OUT from MID)>>
-<<ggreater.lisp (MID from IN)>>
-<<ggreater.lisp.dvi (DOC from IN)>>
-
 <<g-opt.o (OUT from MID)>>
 <<g-opt.clisp (MID from IN)>>
 <<g-opt.boot.dvi (DOC from IN)>>
@@ -8049,7 +8009,6 @@ pp
 \bibitem{14} {\bf \$SPAD/src/interp/debug.lisp.pamphlet}
 \bibitem{16} {\bf \$SPAD/src/interp/fortcall.boot.pamphlet}
 \bibitem{17} {\bf \$SPAD/src/interp/fname.lisp.pamphlet}
-\bibitem{19} {\bf \$SPAD/src/interp/ggreater.lisp.pamphlet}
 \bibitem{20} {\bf \$SPAD/src/interp/hash.lisp.pamphlet}
 \bibitem{21} {\bf \$SPAD/src/interp/macros.lisp.pamphlet}
 \bibitem{24} {\bf \$SPAD/src/interp/monitor.lisp.pamphlet}
diff --git a/src/interp/debugsys.lisp.pamphlet b/src/interp/debugsys.lisp.pamphlet
index c7ee30b..cb75b4f 100644
--- a/src/interp/debugsys.lisp.pamphlet
+++ b/src/interp/debugsys.lisp.pamphlet
@@ -115,7 +115,6 @@ loaded by hand we need to establish a value.
       (thesymb "/int/interp/g-opt.clisp")
       (thesymb "/int/interp/g-timer.clisp")
       (thesymb "/int/interp/g-util.clisp")
-      (thesymb "/int/interp/ggreater.lisp")
       (thesymb "/int/interp/hypertex.clisp")
       (thesymb "/int/interp/i-analy.clisp")
       (thesymb "/int/interp/i-code.clisp")
diff --git a/src/interp/ggreater.lisp.pamphlet b/src/interp/ggreater.lisp.pamphlet
deleted file mode 100644
index 0097e03..0000000
--- a/src/interp/ggreater.lisp.pamphlet
+++ /dev/null
@@ -1,227 +0,0 @@
-\documentclass{article}
-\usepackage{axiom}
-\begin{document}
-\title{\$SPAD/src/interp ggreater.lisp}
-\author{Timothy Daly}
-\maketitle
-\begin{abstract}
-\end{abstract}
-\eject
-\tableofcontents
-\eject
-\section{License}
-<<license>>=
-;; Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd.
-;; All rights reserved.
-;;
-;; Redistribution and use in source and binary forms, with or without
-;; modification, are permitted provided that the following conditions are
-;; met:
-;;
-;;     - Redistributions of source code must retain the above copyright
-;;       notice, this list of conditions and the following disclaimer.
-;;
-;;     - Redistributions in binary form must reproduce the above copyright
-;;       notice, this list of conditions and the following disclaimer in
-;;       the documentation and/or other materials provided with the
-;;       distribution.
-;;
-;;     - Neither the name of The Numerical ALgorithms Group Ltd. nor the
-;;       names of its contributors may be used to endorse or promote products
-;;       derived from this software without specific prior written permission.
-;;
-;; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
-;; IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
-;; TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-;; PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
-;; OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-;; EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-;; PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-;; PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-;; LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-;; NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-;; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-@
-<<*>>=
-<<license>>
-
-(in-package "VMLISP")
-
-(DEFUN LEXGREATERP (COMPERAND-1 COMPERAND-2)
-    ;;  "Order of types: pair NIL vec ivec/rvec cvec ident num fbpi mbpi other"
-    (COND
-      ((EQ COMPERAND-1 COMPERAND-2) NIL)
-      ((consp COMPERAND-1)
-        (COND
-          ( (consp COMPERAND-2)
-            (COND
-              ( (EQUAL (qcar COMPERAND-1) (qcar COMPERAND-2))
-                (LEXGREATERP (qcdr COMPERAND-1) (qcdr COMPERAND-2)) )
-              ( (LEXGREATERP (qcar COMPERAND-1) (qcar COMPERAND-2)) ) ) )
-          ('else t)))
-      ((consp COMPERAND-2) NIL)
-      ((NULL COMPERAND-1) 'T )
-      ((NULL COMPERAND-2) NIL)
-      ((VECP COMPERAND-1)
-        (COND
-          ((VECP COMPERAND-2) (LEXVGREATERP COMPERAND-1 COMPERAND-2) )
-          ('else t)))
-      ((VECP COMPERAND-2) NIL)
-      ((OR (IVECP COMPERAND-1) (RVECP COMPERAND-1))
-        (COND
-          ( (OR (IVECP COMPERAND-2) (RVECP COMPERAND-2))
-            (LEXVGREATERP COMPERAND-1 COMPERAND-2) )
-          ('else t)))
-      ((OR (IVECP COMPERAND-2) (RVECP COMPERAND-2)) NIL )
-      ((stringp COMPERAND-1)
-        (COND
-          ((stringp COMPERAND-2)
-            (STRING-GREATERP COMPERAND-1 COMPERAND-2) )
-          ('else t)))
-      ((stringp COMPERAND-2) NIL)
-      ((symbolp COMPERAND-1)
-        (COND
-          ((symbolp COMPERAND-2)
-            (STRING-GREATERP (symbol-name COMPERAND-1) (symbol-name COMPERAND-2)) )
-          ('else t)))
-      ((symbolp COMPERAND-2) NIL )
-      ((numberp COMPERAND-1)
-        (COND
-          ( (numberp COMPERAND-2)
-            (> COMPERAND-1 COMPERAND-2) )
-          ('else t)))
-      ((numberp COMPERAND-2) NIL)
-      ((CHARACTERP COMPERAND-1)
-	(COND 
-          ((CHARACTERP COMPERAND-2)
-	    (CHAR-GREATERP COMPERAND-1 COMPERAND-2) )
-	  ('else t)))
-      ((CHARACTERP COMPERAND-2)	NIL )
-      ((FBPIP COMPERAND-1)
-        (COND
-          ((FBPIP COMPERAND-2)
-            (LEXGREATERP (BPINAME COMPERAND-1) (BPINAME COMPERAND-2)) )
-          ('else t)))
-      ((FBPIP COMPERAND-2) NIL)
-      ((MBPIP COMPERAND-1)
-        (COND
-          ((MBPIP COMPERAND-2)
-            (LEXGREATERP (BPINAME COMPERAND-1) (BPINAME COMPERAND-2)) )
-          ('else t)))
-      ((MBPIP COMPERAND-2)
-        NIL )
-      ((> (SXHASH COMPERAND-1) (SXHASH COMPERAND-2)))))
-
-(DEFUN LEXVGREATERP (VECTOR-COMPERAND-1 VECTOR-COMPERAND-2)
-  (declare (simple-vector vector-comperand-1 vector-comperand-2))
-    (PROG (L1 L2 I T1 T2)
-     (declare (fixnum i l1 l2) )
-      (SETQ I -1)
-      (SETQ L1 (length VECTOR-COMPERAND-1))
-      (SETQ L2 (length VECTOR-COMPERAND-2))
-  LP  (setq i (1+ i))
-      (COND
-        ((EQL L1 I) (RETURN NIL))
-        ((EQL L2 I) (RETURN 'T)))
-      (COND
-        ((EQUAL
-            (SETQ T1 (svref VECTOR-COMPERAND-1 I))
-            (SETQ T2 (svref VECTOR-COMPERAND-2 I)))
-          (GO LP)))
-      (RETURN (LEXGREATERP T1 T2)) ) )
-
-
-(DEFUN GGREATERP (COMPERAND-1 COMPERAND-2)
-    ;;  "Order of types: pair NIL vec ivec/rvec cvec ident num fbpi mbpi other"
-    (COND
-      ((EQ COMPERAND-1 COMPERAND-2) NIL)
-      ((symbolp COMPERAND-1)
-        (COND
-          ((symbolp COMPERAND-2)
-            (CGREATERP (symbol-name COMPERAND-1) (symbol-name COMPERAND-2)) )
-          ('else t)))
-      ((symbolp COMPERAND-2) NIL )
-      ((consp COMPERAND-1)
-        (COND
-          ( (consp COMPERAND-2)
-            (COND
-              ( (EQUAL (qcar COMPERAND-1) (qcar COMPERAND-2))
-                (GGREATERP (qcdr COMPERAND-1) (qcdr COMPERAND-2)) )
-              ( (GGREATERP (qcar COMPERAND-1) (qcar COMPERAND-2)) ) ) )
-          ('else t)))
-      ((consp COMPERAND-2) NIL)
-      ((NULL COMPERAND-1) 'T )
-      ((NULL COMPERAND-2) NIL)
-      ((VECP COMPERAND-1)
-        (COND
-          ((VECP COMPERAND-2) (VGREATERP COMPERAND-1 COMPERAND-2) )
-          ('else t)))
-      ((VECP COMPERAND-2) NIL)
-      ((OR (IVECP COMPERAND-1) (RVECP COMPERAND-1))
-        (COND
-          ( (OR (IVECP COMPERAND-2) (RVECP COMPERAND-2))
-            (VGREATERP COMPERAND-1 COMPERAND-2) )
-          ('else t)))
-      ((OR (IVECP COMPERAND-2) (RVECP COMPERAND-2)) NIL )
-      ((stringp COMPERAND-1)
-        (COND
-          ((stringp COMPERAND-2)
-            (CGREATERP COMPERAND-1 COMPERAND-2) )
-          ('else t)))
-      ((stringp COMPERAND-2) NIL)
-      ((numberp COMPERAND-1)
-        (COND
-          ( (numberp COMPERAND-2)
-            (> COMPERAND-1 COMPERAND-2) )
-          ('else t)))
-      ((numberp COMPERAND-2) NIL)
-      ((CHARACTERP COMPERAND-1)
-	(COND 
-          ((CHARACTERP COMPERAND-2)
-	    (CHAR> COMPERAND-1 COMPERAND-2) )
-	  ('else t)))
-      ((CHARACTERP COMPERAND-2)	NIL )
-      ((FBPIP COMPERAND-1)
-        (COND
-          ((FBPIP COMPERAND-2)
-            (GGREATERP (BPINAME COMPERAND-1) (BPINAME COMPERAND-2)) )
-          ('else t)))
-      ((FBPIP COMPERAND-2) NIL)
-      ((MBPIP COMPERAND-1)
-        (COND
-          ((MBPIP COMPERAND-2)
-            (GGREATERP (BPINAME COMPERAND-1) (BPINAME COMPERAND-2)) )
-          ('else t)))
-      ((MBPIP COMPERAND-2)
-        NIL )
-      ((> (SXHASH COMPERAND-1) (SXHASH COMPERAND-2)))))
-
-(DEFUN VGREATERP (VECTOR-COMPERAND-1 VECTOR-COMPERAND-2)
-  (declare (simple-vector vector-comperand-1 vector-comperand-2))
-    (PROG (L1 L2 I T1 T2)
-     (declare (fixnum i l1 l2) )
-      (SETQ I -1)
-      (SETQ L1 (length VECTOR-COMPERAND-1))
-      (SETQ L2 (length VECTOR-COMPERAND-2))
-  LP  (setq i (1+ i))
-      (COND
-        ((EQL L1 I) (RETURN NIL))
-        ((EQL L2 I) (RETURN 'T)))
-      (COND
-        ((EQUAL
-            (SETQ T1 (svref VECTOR-COMPERAND-1 I))
-            (SETQ T2 (svref VECTOR-COMPERAND-2 I)))
-          (GO LP)))
-      (RETURN (GGREATERP T1 T2)) ) )
-
-(defvar SORTGREATERP #'GGREATERP "default sorting predicate")
-
-
-
-@
-\eject
-\begin{thebibliography}{99}
-\bibitem{1} nothing
-\end{thebibliography}
-\end{document}
diff --git a/src/interp/vmlisp.lisp.pamphlet b/src/interp/vmlisp.lisp.pamphlet
index 58e3913..5d2e28d 100644
--- a/src/interp/vmlisp.lisp.pamphlet
+++ b/src/interp/vmlisp.lisp.pamphlet
@@ -1882,6 +1882,176 @@ and works properly.
 (defun MAKE-BVEC (n)
  (make-array (list n) :element-type 'bit :initial-element 0))
 
+(DEFUN LEXGREATERP (COMPERAND-1 COMPERAND-2)
+    ;;  "Order of types: pair NIL vec ivec/rvec cvec ident num fbpi mbpi other"
+    (COND
+      ((EQ COMPERAND-1 COMPERAND-2) NIL)
+      ((consp COMPERAND-1)
+        (COND
+          ( (consp COMPERAND-2)
+            (COND
+              ( (EQUAL (qcar COMPERAND-1) (qcar COMPERAND-2))
+                (LEXGREATERP (qcdr COMPERAND-1) (qcdr COMPERAND-2)) )
+              ( (LEXGREATERP (qcar COMPERAND-1) (qcar COMPERAND-2)) ) ) )
+          ('else t)))
+      ((consp COMPERAND-2) NIL)
+      ((NULL COMPERAND-1) 'T )
+      ((NULL COMPERAND-2) NIL)
+      ((VECP COMPERAND-1)
+        (COND
+          ((VECP COMPERAND-2) (LEXVGREATERP COMPERAND-1 COMPERAND-2) )
+          ('else t)))
+      ((VECP COMPERAND-2) NIL)
+      ((OR (IVECP COMPERAND-1) (RVECP COMPERAND-1))
+        (COND
+          ( (OR (IVECP COMPERAND-2) (RVECP COMPERAND-2))
+            (LEXVGREATERP COMPERAND-1 COMPERAND-2) )
+          ('else t)))
+      ((OR (IVECP COMPERAND-2) (RVECP COMPERAND-2)) NIL )
+      ((stringp COMPERAND-1)
+        (COND
+          ((stringp COMPERAND-2)
+            (STRING-GREATERP COMPERAND-1 COMPERAND-2) )
+          ('else t)))
+      ((stringp COMPERAND-2) NIL)
+      ((symbolp COMPERAND-1)
+        (COND
+          ((symbolp COMPERAND-2)
+            (STRING-GREATERP (symbol-name COMPERAND-1) (symbol-name COMPERAND-2)) )
+          ('else t)))
+      ((symbolp COMPERAND-2) NIL )
+      ((numberp COMPERAND-1)
+        (COND
+          ( (numberp COMPERAND-2)
+            (> COMPERAND-1 COMPERAND-2) )
+          ('else t)))
+      ((numberp COMPERAND-2) NIL)
+      ((CHARACTERP COMPERAND-1)
+	(COND 
+          ((CHARACTERP COMPERAND-2)
+	    (CHAR-GREATERP COMPERAND-1 COMPERAND-2) )
+	  ('else t)))
+      ((CHARACTERP COMPERAND-2)	NIL )
+      ((FBPIP COMPERAND-1)
+        (COND
+          ((FBPIP COMPERAND-2)
+            (LEXGREATERP (BPINAME COMPERAND-1) (BPINAME COMPERAND-2)) )
+          ('else t)))
+      ((FBPIP COMPERAND-2) NIL)
+      ((MBPIP COMPERAND-1)
+        (COND
+          ((MBPIP COMPERAND-2)
+            (LEXGREATERP (BPINAME COMPERAND-1) (BPINAME COMPERAND-2)) )
+          ('else t)))
+      ((MBPIP COMPERAND-2)
+        NIL )
+      ((> (SXHASH COMPERAND-1) (SXHASH COMPERAND-2)))))
+
+(DEFUN LEXVGREATERP (VECTOR-COMPERAND-1 VECTOR-COMPERAND-2)
+  (declare (simple-vector vector-comperand-1 vector-comperand-2))
+    (PROG (L1 L2 I T1 T2)
+     (declare (fixnum i l1 l2) )
+      (SETQ I -1)
+      (SETQ L1 (length VECTOR-COMPERAND-1))
+      (SETQ L2 (length VECTOR-COMPERAND-2))
+  LP  (setq i (1+ i))
+      (COND
+        ((EQL L1 I) (RETURN NIL))
+        ((EQL L2 I) (RETURN 'T)))
+      (COND
+        ((EQUAL
+            (SETQ T1 (svref VECTOR-COMPERAND-1 I))
+            (SETQ T2 (svref VECTOR-COMPERAND-2 I)))
+          (GO LP)))
+      (RETURN (LEXGREATERP T1 T2)) ) )
+
+
+(DEFUN GGREATERP (COMPERAND-1 COMPERAND-2)
+    ;;  "Order of types: pair NIL vec ivec/rvec cvec ident num fbpi mbpi other"
+    (COND
+      ((EQ COMPERAND-1 COMPERAND-2) NIL)
+      ((symbolp COMPERAND-1)
+        (COND
+          ((symbolp COMPERAND-2)
+            (CGREATERP (symbol-name COMPERAND-1) (symbol-name COMPERAND-2)) )
+          ('else t)))
+      ((symbolp COMPERAND-2) NIL )
+      ((consp COMPERAND-1)
+        (COND
+          ( (consp COMPERAND-2)
+            (COND
+              ( (EQUAL (qcar COMPERAND-1) (qcar COMPERAND-2))
+                (GGREATERP (qcdr COMPERAND-1) (qcdr COMPERAND-2)) )
+              ( (GGREATERP (qcar COMPERAND-1) (qcar COMPERAND-2)) ) ) )
+          ('else t)))
+      ((consp COMPERAND-2) NIL)
+      ((NULL COMPERAND-1) 'T )
+      ((NULL COMPERAND-2) NIL)
+      ((VECP COMPERAND-1)
+        (COND
+          ((VECP COMPERAND-2) (VGREATERP COMPERAND-1 COMPERAND-2) )
+          ('else t)))
+      ((VECP COMPERAND-2) NIL)
+      ((OR (IVECP COMPERAND-1) (RVECP COMPERAND-1))
+        (COND
+          ( (OR (IVECP COMPERAND-2) (RVECP COMPERAND-2))
+            (VGREATERP COMPERAND-1 COMPERAND-2) )
+          ('else t)))
+      ((OR (IVECP COMPERAND-2) (RVECP COMPERAND-2)) NIL )
+      ((stringp COMPERAND-1)
+        (COND
+          ((stringp COMPERAND-2)
+            (CGREATERP COMPERAND-1 COMPERAND-2) )
+          ('else t)))
+      ((stringp COMPERAND-2) NIL)
+      ((numberp COMPERAND-1)
+        (COND
+          ( (numberp COMPERAND-2)
+            (> COMPERAND-1 COMPERAND-2) )
+          ('else t)))
+      ((numberp COMPERAND-2) NIL)
+      ((CHARACTERP COMPERAND-1)
+	(COND 
+          ((CHARACTERP COMPERAND-2)
+	    (CHAR> COMPERAND-1 COMPERAND-2) )
+	  ('else t)))
+      ((CHARACTERP COMPERAND-2)	NIL )
+      ((FBPIP COMPERAND-1)
+        (COND
+          ((FBPIP COMPERAND-2)
+            (GGREATERP (BPINAME COMPERAND-1) (BPINAME COMPERAND-2)) )
+          ('else t)))
+      ((FBPIP COMPERAND-2) NIL)
+      ((MBPIP COMPERAND-1)
+        (COND
+          ((MBPIP COMPERAND-2)
+            (GGREATERP (BPINAME COMPERAND-1) (BPINAME COMPERAND-2)) )
+          ('else t)))
+      ((MBPIP COMPERAND-2)
+        NIL )
+      ((> (SXHASH COMPERAND-1) (SXHASH COMPERAND-2)))))
+
+(DEFUN VGREATERP (VECTOR-COMPERAND-1 VECTOR-COMPERAND-2)
+  (declare (simple-vector vector-comperand-1 vector-comperand-2))
+    (PROG (L1 L2 I T1 T2)
+     (declare (fixnum i l1 l2) )
+      (SETQ I -1)
+      (SETQ L1 (length VECTOR-COMPERAND-1))
+      (SETQ L2 (length VECTOR-COMPERAND-2))
+  LP  (setq i (1+ i))
+      (COND
+        ((EQL L1 I) (RETURN NIL))
+        ((EQL L2 I) (RETURN 'T)))
+      (COND
+        ((EQUAL
+            (SETQ T1 (svref VECTOR-COMPERAND-1 I))
+            (SETQ T2 (svref VECTOR-COMPERAND-2 I)))
+          (GO LP)))
+      (RETURN (GGREATERP T1 T2)) ) )
+
+(defvar SORTGREATERP #'GGREATERP "default sorting predicate")
+
+
 (in-package 'boot)
 
 #+(or :cmu :akcl :gcl)
