OH! did not know it can take a second argument called maxSubSteps
.
Searched the web for it … and …
old doc says :
maxSubSteps: Should generally stay at one so Bullet interpolates current values on its own. A value of zero implies a variable tick rate, meaning Bullet advances the simulation exactly timeStep seconds instead of interpolating.
new doc says:
It is perfectly fine to stepSimulation(1/120 , 0) to get a fixed timestep of 120 Hertz for example.
It mentions you can safely use maxSubSteps = 0 with a fixed timeStep. In our case t=1/60.