Это общий механизм, не специфичный для dotimes
.
Если кто-то вызывает функцию или устанавливает переменную, то будет передано только первое значение:
CL-USER 52 > (defun foo (x) x)
FOO
CL-USER 53 > (foo (floor 5 2))
2
CL-USER 54 > (let ((foo (floor 5 2)))
foo)
2
Комусделать эквивалент (вызов функций, связывание переменных) с несколькими значениями, нужно использовать специальные конструкции:
CL-USER 55 > (multiple-value-call #'list
(floor 5 2) (floor 7 3))
(2 1 2 1)
CL-USER 56 > (multiple-value-bind (foo0 foo1)
(floor 5 2)
(list foo0 foo1))
(2 1)