No try to move your character with it, instead of using multiply calls of c_move instruction.
You'll need to make only one call with "my.dist_x" and then change all those three defines.
BTW, for gravity you better use absolute force, like this:
c_move(my,vector(my.dist_x,my.dist_y,0),vector(0,0,my.dist_z),IGNORE_PASSABLE|GLIDE);
May be this will help you to solve the problem, it may be was caused by multiply c_move calls.