It seems that calling a function with the wrong number of arguments can have a global effect: test(a,b) := block([],a:a*2,b:b*3,return([a,b])); After test(d), we have a = d. Regards Fabrizio