Interesting. I was hoping for (b) because that's how it works in 2.35 where all the timestamps for tick/tock/run are the same.
Here's another log with priceClose(0) displayed.
As you can see, Bar 976 tick/TOCK has a timestamp of 1430, and yet the priceClose(0) of 3753.72 is actually from the end of Bar 976. This means regardless of timestamp tick/tock is getting prices at the end of Bar 976, which is 1432.
If you agree that this is the correct behavior, then I would submit that contactUpdate inside of tock should ALSO pull the contract chain at 1432, as options prices are mathematically linked to the UL price.
Imagine the BarPeriod=60, the UL price and corresponding options chain, inside tock, will be 1 hour apart!!! That's a big problem.
There was not a problem in 2.35 and prior versions.
Thanks.
[2058] Bar[975] tick -- priceClose()[3707.86] [SPX] LastMonth[1] RunMonth[1] NewMonth[0]...
[2058] Bar[975] TOCK -- priceClose()[3707.86] [SPX] LastMonth[1] RunMonth[1] NewMonth[0]...
[975: Mon 21-02-01 14:30] 3727.72/3727.72\3703.61/3707.86 -0.01
[1430] Bar[975] run() -- price=3707.86
[1430] Bar[976] tick -- priceClose()[3753.72] [SPX] LastMonth[1] RunMonth[2] NewMonth[1]...
[1430] Bar[976] TOCK -- priceClose()[3753.72] [SPX] LastMonth[1] RunMonth[2] NewMonth[1]... USE NEW T8: C:\Zorro\History\SPX-Options\\SPX_202102_m1.t8
[976: Mon 21-02-01 14:32] 3751.48/3753.72\3751.48/3753.72 -0.01
[1432] Bar[976] run() -- price=3753.72