double_integral_draw()



A while back I ran across the following function:

double_integral_draw (z, x, x0, x1, y, y0, y1) :=
  block([xval, yval, cur, lin1, lin2, opt1, opt2, opt3, u, n: 50],
    cur: makelist(
           (yval: float(k/n)*(y1-y0) + y0,
            parametric(u, yval, subst([x=u, y=yval], z),
                       u, subst(y=yval, x0), subst(y=yval, x1))),
           k, 1, n),
    lin1: makelist(
            (yval: float(k/n)*(y1-y0) + y0,
             xval: subst(y=yval, x0),
             points([[xval, yval, 0],
                     [xval, yval, subst([x=xval, y=yval], z)]])),
            k, 1, n),
    lin2: makelist(
            (yval: float(k/n)*(y1-y0) + y0,
             xval: subst(y=yval, x1),
             points([[xval,yval,0],
                     [xval,yval,subst([x=xval, y=yval], z)]])),
            k, 1, n),
    opt1: [xlabel="x",ylabel="y",color=blue, xyplane=0],
    opt2: [points_joined=true, point_size=0,color=red],
    opt3: [color=green] ,
    apply(draw3d, append(opt1, cur, opt2, lin1, opt3, lin2))  ) $

Having loaded the "draw" function, one could then 
invoke the double_integral_draw function shown above, via a command such as
double_integral_draw (2-y, x, 0, 4-y^2, y, 0, 2) $ 
and get a nice 3D pic of the "situation".
This process does not seem to work anymore under the new Maxima version and probably needs a very simple tweak.
Could someone help?

Sincerely
Guerrieri