Can't stop my variable value at zero?
The interval variable is unsigned long. 

In this example, we are using int that are 4 bits long (just to keep thing short) just to subtract 1 from 0:

    0b0000
   -0b0001
    ------
    0b1111


That is normal arithmetic, but in binary. 

The result 0b1111 can read as a signed int, in which case we read the value '-1', or you can read as unsigned, and you read it as '15'.

The same thing is working in your case, only that your int are 32 bits long.

The unsigned keyword is not a promise that "0-1" will produce "0". It only indicates that whatever bit configuration is inside that variable, it will be treat as a positive value.