Frederick, you should know by now that you should post your problem in one place, and document it to the fullest there. If possible give pictures (or if you really good a link to a short video). What people have been saying earlier is true, your value bullet_speed.x is your speed. c_move only moves as far as you let it, or until it runs into something that you deem not passable, but the fact remain that unless it hasn't moved that distance, bullet_speed.x is always the speed given. So unless your result looks strange once you hit an object, your code is rudunant, and you can pass bullet_speed.x if you'd like.
What it looks like your doing now is getting the real distance between the first and second point (before and after c_move) but I believe vec_inverse just gives the opposite of what you give it (+ to -, vise versa). I would suggest trying abs(value); to get the distance (absolute values turn everything to its + value), otherwise you may come up with negative distances, I'm guessing either this, or time_step is your problem, but I can't be 100% certain without pics.
I personally have unresolved issues with time_step, so I'm not a perfect person to ask, but as a few last ditch efforts I would suggest trying to pass just bullet_speed.x into your function and see what happens as a result. Also, you could try passing the event function before the c_move, I doubt it will do anything significant but you never know. Hope one of these solutions work, post back if you have any more problems, and if you find out time_step is giving you issues, please PM me or post back here, I would be interested in your findings.