Bit curious why you are defining margs and msteps. How does this function differ from the usual?