Consider this: (defun zot (z) (type-of (coerce z '(complex double-float)))) (compile 'zot) (zot 10) -> (integer 10 10) I think it should return (complex double-float), not integer. Ray