I don't have a new-enough version to have DYNMODE, but:
Could it be that your Layer command is redefined somehow [it is in ADT2004], and that something in the redefinition is doing it? If so, you can force it to use the "native" non-redefined original form of the command, with a preceding period/decimal. [And you can combine all of that into one layer command in one (command) function.]
(defun C:LAYSON ()
(command "_.layer" "_u" "*" "_on" "*" "")
)
--
Kent Cooper
Kent Cooper, AIA