strange behavior in time measurement.

10 micros is probably way too short. 10 millis is closer to practical.

The micros() function rounds up to 4.

From your results it looks like you are subtracting the now from the previous or getting them in the wrong order.

You are using unsigned long and not long anywhere in there?
You are ending all constant values for unsigned long with UL? Ex: const unsigned long 10UL;

If there is no signal for, lets say 10.000 micro seconds than turn off a led.

Please say that you are not using float or double. Please.