When you insert a stimulus at a specified time as in
/ontrialbegin = [trial.neuneg_trial1.insertstimulustime(picture.mask, 200+values.fixduration);]
the inserted stimulus *persists* across trials -- i.e., the changes are *cumulative* -- *unless* you explicitly reset the stimulus presentation sequence.
Suppose you insert the mask picture at 600ms in the *first* instance of <trial neuneg_trial1>. That instance of the trial will display the mask picture at that time.
Further suppose you insert the mask picture at 1400ms in the *second* instance of <trial neuneg_trial1>. That instance will now display the mask picture at *both* 600ms (where it was inserted in the 1st instance) AND 1400ms (where it was inserted in the 2nd instance).
The above is how it's intended to work, i.e., it is not a bug.
The solution is to do
<trial neuneg_trial1>
/ontrialbegin = [values.fixduration = replace(400, 600, 800, 1000, 1200, 1400, 1600)]
/ontrialbegin = [trial.neuneg_trial1.insertstimulustime(picture.mask, 200+values.fixduration);]
/stimulustimes = [1=fixation_cross_text; 200=neuneg_picture1]
/validresponse = (203, 205)
/ontrialend = [values.presponse = trial.neuneg_trial1.response]
/ontrialend = [if(values.fixduration <= 850) values.correctresponse = "203"]
/ontrialend = [if(values.fixduration >=851) values.correctresponse = "205"]
/ontrialend=[if(values.correctresponse == values.presponse) values.trialoutcome = 1]
/ontrialend=[if(values.correctresponse != values.presponse) values.trialoutcome = 0]
/ontrialend = [trial.neuneg_trial1.resetstimulusframes(); ]/pretrialpause = (400)
/recorddata= true
/inputdevice= keyboard
</trial>
as previously noted here
https://www.millisecond.com/forums/FindPost19218.aspx under #1.
Hope this helps.