Index: /trunk/ccl/level-1/l1-dcode.lisp
===================================================================
--- /trunk/ccl/level-1/l1-dcode.lisp	(revision 312)
+++ /trunk/ccl/level-1/l1-dcode.lisp	(revision 313)
@@ -779,10 +779,12 @@
     (let* ((args-len (list-length args))
            (argnum (%gf-dispatch-table-argnum dt)))
-      (when (< args-len argnum) (signal-program-error "Too few args ~s to ~s." args-len (%gf-dispatch-table-gf dt)))
+      (declare (fixnum args-len arg-num))
+      (when (or (zerop args-len) (< args-len argnum)) (signal-program-error "Too few args ~s to ~s." args-len (%gf-dispatch-table-gf dt)))
       (let ((method (%find-nth-arg-combined-method dt (nth argnum args) args)))
         (apply method args)))
     (let* ((args-len (%lexpr-count args))
            (argnum (%gf-dispatch-table-argnum dt)))
-      (when (< args-len argnum) (signal-program-error "Too few args ~s to ~s." args-len (%gf-dispatch-table-gf dt)))
+      (declare (fixnum args-len arg-num))
+      (when (or (zerop args-len) (< args-len argnum)) (signal-program-error "Too few args ~s to ~s." args-len (%gf-dispatch-table-gf dt)))
       (let ((method (%find-nth-arg-combined-method dt (%lexpr-ref args args-len argnum) args)))
 	(%apply-lexpr-tail-wise method args)))))
