you might consider adding an integer return type: define method tak (x :: <integer>, y :: <integer>, z :: <integer>) => (res :: <integer>) if (y >= x) z else tak(tak(x - 1, y, z), tak(y - 1, z, x), tak(z - 1, x, y)) end if end; jonathan bachrach