The time differences are marginal, these are the corresponding ticks from AT:

2018.04.02 11:58:33.441 1,23424
2018.04.02 13:24:36.848 1,23296
2018.04.02 13:47:54.982 1,23185

I don't know if marketVal() return the right values, if I regard the ticks from above again and verify them against the last bid price, I calculate the following:

2018.04.02 11:58:33.441 1,23424
2018.04.02 11:58:33.441 -1,23419
(2018.04.02 11:58:32.988 1,23425)
(2018.04.02 11:58:32.988 -1,23419)
=> calculated spread: 0.00005, spread by marketVal(): 0.00000

2018.04.02 13:24:36.848 1,23296
2018.04.02 13:24:36.848 -1,23291
(2018.04.02 13:24:35.364 -1,23291)
=> calculated spread: 0.00005, spread by marketVal(): 0.00000

2018.04.02 13:47:54.982 1,23185
2018.04.02 13:47:54.982 -1,2318
(2018.04.02 13:47:54.482 1,23186)
(2018.04.02 13:47:54.482 -1,23181)
=> calculated spread: 0.00005 (0.00004), spread by marketVal(): 0.00000

Ticks in parentheses are the ticks before because jcl meant the bid price before could be significant, but in no case I come to the values marketVal() returns. There can be 2 reasons: I calculate wrong or marketVal() calculates wrong.