It's a convention going back to the film era to show the power of 2 values in more "normal" values, so 1/16 => 1/15, 1/128 => 1/125
I'd generally expect cameras to use the power of 2 values, since that's how APEX is defined (see
http://dougkerr.net/Pumpkin/#APEX), but for normal manual shooting, the difference is irrelevant because you are generally limited to 1/3 or 1/4 stop increments.
I've generally assumed this the Canon firmware uses the proper APEX values, since single increments APEX96 works as expected, but I couldn't remember remember if I ever tested directly, so...
The actual microsecond value used by the camera can be obtained using the Canon firmware apex2us function. For historical reason, the script tv96_to_usec just uses the formula, so could theoretically differ.
Testing on elph130 shows the camera uses the same calculation, for 1 to 1/1000th, at least
=t='' for v=0,960,96 do t=t..string.format("%4d %6d %6d\n",v,tv96_to_usec(v),call_func_ptr(0xff29de84,v)) end return t
0 1000000 1000000
96 500000 500000
192 250000 250000
288 125000 125000
384 62500 62500
480 31250 31250
576 15625 15625
672 7813 7813
768 3906 3906
864 1953 1953
960 977 977
Note the 0xff29de84 is specific to elph130, if you try this on another cameras, use that ports apex2us address from the funcs*.csv