As far as I can see, the instructions trial has no fixed duration. Also, as the marker depends on the time of response submission, there is no way to predict when exactly it will occur. Once it does occur, you've specified it to last 50 ms. Presumably, you also haven't set the respective <port> or other stims to /erase=false in <trial instructions>, thus introducing a frame between trials for cleanup / stimulus erasing. In sum, you may get a variable delay of a couple of frames.
So what would be the best way to eliminate the extra delay? Setting stims to erase=false?
Yes.
I am getting ranges between the ~88ms to ~146ms still.
I have multiple trials for breaks in the beginning. What factors usually cause the trials to get extra ms added on?
Cleanup, stimulus erasing. You should read the help topic mentioned previously ("How to control trial duration..."), the topic for the /erase attribute as well as the "How to erase stimuli" topic. Also: It is useful to think about timing strictly in terms of (display) frames and make proper use of /pretrialpause and /posttrialpause.
Still having problems with extra ms intervals. Would you be willing to look at the code via email?
I can do that. Note that you can simply attach the script to this thread (see the 'Options' tab for upload controls). Also, please indicate clearly where you see delays (i.e., include data to illustrate the issue) and what you expect the code to do (i.e., include comments in the relevant portions of your script).