The 
| the result of truncating the result of number divided by divisor | ||
| the remainder of the truncate operation | 
(defun cl:ceiling (number &optional (divisor
                                    (if (integerp number) 1 1.0)
                                    divisor-p))
  (let ((quotient
          (cond ((and (not divisor-p) (integerp number)) number)
                ((= number divisor) 1)
                (t (let ((i-quotient (/ (truncate number) (truncate divisor)))
                         (f-quotient (/ (float number) divisor)))
                     (if (or (= i-quotient f-quotient)  ; integer result
                             (not (plusp f-quotient)))
                          (truncate f-quotient)
                          (1+ (truncate f-quotient))))))))
    (setq *rslt* (list quotient (- number (* quotient divisor)))
          cl:*multiple-values* t)
    quotient))
The 
The quotient is directly returned by the function, while a list:
(quotient remainder)
is stored in the Nyquist/XLISP *rslt* variable and the cl:*multiple-values* is set to T to signal that Multiple Values are returned.
Examples:
(cl:ceiling 3.5) => 4 ; *rslt* => ( 4 -0.5) (cl:ceiling -3.5) => -3 ; *rslt* => (-3 -0.5)