Could you explain what your issue is? if you set a single shot timer like: TMR_StartSingleShotTimer(id, 0, pCall, pArg); it will actually just call your callback pCall and as long as it is just a single shot timer, it will not count anymore, so yes, this is a expected behavior.