And try to stop and reset immediately: ~kik.stop; ~kik.reset;
Counter was set back to 0.
I think that when you do this, the wait command is still ‘in the air’, even if stopped, and when it yields next, since the Routine was stopped but reset, it starts again.
See what happens using those: ~kik.stop; { ~kik.reset }.defer(0.4); ~kik.stop; { ~kik.reset }.defer(0.6);
First behaves ‘incorrectly’, second is working. This is because the second resets after the next yield. So this is a solution.
IMO, you should instead create a function that stops current routine and create a brand new one every time you need it.