Unless I misunderstand something, this patch fixes a small error probably introduced by a bit of cut-n-paste:
--- chartest.lisp~ 2009-08-21 21:06:53.000000000 -0700 +++ chartest.lisp 2009-09-05 06:51:12.000000000 -0700 @@ -88,7 +88,7 @@ (not (in-charset-p char charset))))))) ((:hash-table :hash-table*) (let ((hash-table (create-hash-table-from-test-function test-function start end))) - (cond ((or (eq kind :charset) + (cond ((or (eq kind :hash-table) (<= (hash-table-count hash-table) (ceiling (- end start) 2))) (lambda (char) (gethash char hash-table)))