in all reality, based on my experience, the routines should run in the order that they appear in the lisp program. At my office, I have a series of loads, that contain numbers printed to the command line (for trouble shooting assistance) and they always load up in the proper number order. And yes, many of them are within IF statements. Now however, if aaa.lsp doesnt replace a specific defun in xxx.lsp, then xxx.lsp will continue to function because it has been loaded. possibly you should set up your IF statement like so:
Code:
(if (= (getvar "Useri5") 99)
(progn
(load "aaa.lsp")
) ;_end progn
(progn
(load "xxx.lsp")
(load "yyy.lsp")
(load "zzz.lsp")
) ;_end progn
) ;_end If