How to reset micros() to start/zero ?

Even in cases of overflows, endtime-startime will always be the correct elapsed duration, as long as the types of endtime and starttime match the the type returned by your counter, which means unsigned long for millis() and micros().

If you start adding durations to timestamps or comparing timestamps with each other, your program will fail because of the overflow.

The sane conclusion to this is to only use code such as:

if (endtime - starttime >= delay) {

Korman

Belated thanks, I've learned something genuinely useful today.