This brings up a good point ive been trying to make for awhile now. What i think you should do is break this code into sections. (Managable ones) I want you to take a "section" out of your main code and create a seperate function for it. Here, let me give you an example. I see that you take the time to set up the users enviroment and everything. Wouldnt a seperate procedure be nice for that? One that you can use in all your future code. (Ok, that was an easy one ...but the concept is the same.)
Another (better) example:
Let's say my main procedure had these lines in it.
(* 3 3 3)
(* 4 4 4)
(* 5 5 5)
(* 6 6 6)
It would be better to have a seperate procedure like this:
(defun cube (x) (* x x x))
and call that procdure for each time we need to cube an expression.
Doing this will be better for you in the long run. You can quickly change the value of several variables by changing the calculation procedure.
Im sorry for the lack of "code help", Ill look your code over, but for now look into my sudgestion and tell me what you think.