#1: the block.blockname.latency returns the last latency for the respective block. That includes any and all trial elements run by said block, whether they collect a response or not (/validresponse=(noresponse)).
#2: When /timeout is specified, latency = timeout if no response occurs. E.g. for
<trial NeutralTop_neutnegOneDotTop>
/ stimulustimes = [1 = neutraltop_neutneg, negativebottom_neutneg]
/ responsetrial = (noresponse, OneDotTop)
/ ontrialbegin = [values.whichtrial = 0]
/ recorddata = false
/ timeout = 100/ ontrialbegin = [values.threat_up_pre = 0]
</trial>
latency *will always be 100ms* and that's what the block-level latency property (#1 above) will return.
#3: /ontrialend or /ontrialbegin attributes specified at the block-level
<block pre1>
[...]
/ ontrialend = [...]
[...]
</block>
apply to *all <trial> elements* run by the block. In other words, they are executed in every trial.
#4: It follows that a statement like
/ ontrialend = [if (
values.whichtrial == 0 && block.pre1.latency < 200) values.frequency200_incong_block1_pre = values.frequency200_incong_block1_pre + 1]
will always be true due to #1 to #3 above.