Maybe someone can point out what i am missing.. I have a function to return a list of arguments to create a node to match inclination with a target: function inc_match{ DECLARE parameter tg. local myNorm to vcrs(ship:up:vector,ship:velocity:orbit). local tgNorm to vcrs(tg:up:vector,tg:velocity:orbit). local point to vcrs(myNorm,tgNorm). local pos0 is vang(ship:up:vector,point). local oldAngle to vang(ship:up:vector,point). wait 1. if oldAngle < vang(ship:up:vector,point) { local pos0 to 360 - vang(ship:up:vector,point). } else { local pos0 to vang(ship:up:vector,point). } local burnETA to (ship:obt:period/360) * pos0. local v to velocityat(ship,time:seconds+burnETA):orbit:mag. local dv to 2*v*SIN(vang(myNorm,tgNorm)/2). local n to list(time:seconds+burnETA,0,-dv,0). unlock angleToAN. return n. } if i cut and paste the contents of that function block of code into its own script, it works well.. i get very erratic results when it's used as a function like: set foo to inc_match(target). exec_node(foo). exec_node is a function that creates and executes a maneuver node according to the arguments in the list.