Calculating the cube root
There is not much to say about this code, it is fine.

You can get rid of incf and setf; the varying x is replaced by a variable named z; I express the comparison as a boolean variable greater (for lack of a better name), which gives:

(defun icbrt (x)
  "Returns the integer cube root of X."
  (check-type x (integer 1))
  (locally (declare (type (integer 1) x))
    (loop
       for s downfrom 30 to 0 by 3
       for z of-type integer = x then (if greater (- z b) z)
       for y of-type integer = 0 then (* 2 (if greater (1+ y) y))
       for b of-type integer = (ash (1+ (* 3 y (1+ y))) s)
       for greater = (&gt;= z b)
       finally (return y))))


Note also that I removed the assertion and used check-type instead. While the additional comment is nice in the assert expression, it adds to the things developers have to maintain (think consistency of error messages), whereas check-type is supposedly already displaying the right amount of information to the user, and throws the right kind of exception.