from lisp to maxima



Hi ,

I want to translate Lisp code to Maxima.

I have Lisp function :

(defun draw-apollonian-gasket (c1 c1 c2 steps)
    (if (> steps 0)
        (let ((c4 (draw-forth-circle c1  c1  c2 ))) ; 
             (draw-apollonian-gasket c1  c1 c4 (- steps 1)) ; c5
             (draw-apollonian-gasket c1  c2  c4 (- steps 1)) ; c6 
             (draw-apollonian-gasket c2  c1  c4 (- steps 1))))); c7=c6


It gives 4 output values c4 and c5,c6 and c7 ( equal to c6)

My Maxima version is :

make_steps(ka,kb,kc,steps):=
(
[kd],
if steps>0 
	then (	
		kd:make_k(ka,kb,ka),
		make_steps(ka,kb,kd,steps-1), /* ke */
		make_steps(kb,ka,kd,steps-1), /* kf */
		make_steps(ka,ka,kd,steps-1)) /* kg*/

);


It gives 4 output values :
kd, ke, kf, kg
Here :
ke value is good,
kf value is bad,
kg is not equal kf ( and its value is bad ). 


It seems that something is wrong with transition of values to called 
function.
I think that this is because of different syntax of LIsp and MAxima ( and 
of course my litle knowlage about it )

Am I right ?
How can I change it ?

TIA

Adam