Dear Jochen, L2 : L doesn't copy the List, its only a new name for the same! object/list may be, instead try: copylist: DistributePlus1(L) := block ( L1 : [], L2 : [] , for i : 1 thru length(L) do (L2 : copylist (L), L2[i] : L2[i]+1, L1 : append(L1, [L2]) ), L1 ); Roland Stewen