Hi, When I want to draw the curve which corresponds to n=60 (blue curve), it doesn't seem possible: I don't understand. Thanks Fabrice \startMPpage[offset=1DK] numeric u; u = 6cm; interim linejoin := mitered; interim ahangle := 30; path xx, yy; xx = ( (-0.3,0) -- 1.4 right) scaled u; yy = ( (-0.1,0) -- 1.8 right) rotated 90 scaled u; def compute_curve(suffix f)(expr xmin, xmax, xinc) = ((xmin,f(xmin)) for x=xmin+xinc step xinc until xmax: .. (x,f(x)) endfor) enddef; for i = 1 upto 4: vardef f(expr x) =x+exp(-i*x) enddef; path curve; curve = compute_curve(f,-0.4,1.4,0.0001) scaled u; draw curve; endfor; vardef f(expr x) =x+exp(-6*x) enddef; path curve; curve = compute_curve(f,-0.4,1.4,0.0001) scaled u; draw curve; vardef f(expr x) =x+exp(-15*x) enddef; path curve; curve = compute_curve(f,-0.4,1.4,0.0001) scaled u; draw curve; vardef f(expr x) =x+exp(-60*x) enddef; path curve; curve = compute_curve(f,-0.4,1.4,0.0001) scaled u; ->>>>> not drawn draw curve withcolor blue; drawarrow (0,0) -- (u,0) withpen pencircle scaled 1.5bp; drawarrow (0,0) -- (0,u) withpen pencircle scaled 1.5bp; label.urt("A",(0,1u)); draw xx; draw yy; draw (1u,0) -- (1u,1.8u); label.llft("0",(0,0)); vardef mark_y_axis(expr value, name) = save p; pair p; p = value * u * up; draw (left--right) scaled 1 shifted p; label.lft(name, p shifted 2 left); enddef; for a = 1 upto 1: mark_y_axis(a, ""); endfor mark_y_axis(1, "$1$"); vardef mark_x_axis(expr value, name) = save p; pair p; p = value * u * right; draw (up--down) scaled 1 shifted p; label.bot(name, p shifted 2 down); enddef; for a = 1 upto 1: mark_x_axis(a, ""); endfor mark_x_axis(1, "$1$"); path rectangle; rectangle = (-0.3u,-0.4u) -- (1.3u,-0.4u) -- (1.3u,-0.4u) -- (1.3u,1.4u) -- (-0.3u,1.4u)--cycle; clip currentpicture to rectangle; \stopMPpage