If you want to declare that the function takes a fixnum and returns a fixnum, you can use a function type declaration:
(declaim (ftype (function (fixnum) (values fixnum &optional)) foo))
Of course, if you pass a fixnum and the result cannot actually be stored in a fixnum, that's no good. So you need to either handle that case or not make such a declaration.