Man, I'm not used to reading pastebin code!
Anyway, a few things:
-Wait is the same thing as yield. Putting yield; after a wait(60); is the same thing as writing wait(61);
-Yield is not needed for loops that do everything inside all at once.
Quite honestly, though, I think there's more than one logic error in your script. It's hard to say what's causing you the real problem. But from what I can understand, try to rewrite your bullet code so that all movement is based on the bullet's Obj_GetAngle. You know, throw in a bit more sin/cos math. That might fix things.
Oh, and don't put infinite loops within your object bullet codes - Besides the typical while(!Obj_BeDeleted(obj)). That'll most likely mess stuff up.
EDIT : Well, I guess I can't really call it an infinite loop now. >_>