I think you don't really want to use length. Since it is a program evaluating last it might not be that bad as you have to goto the last element anyway.

Here is mine:

(defun our-last (list) (if (rest list) (our-last (rest list)) list))