Serial data always -1 when nothing happening

millis() returns an unsigned long. All your time operations should be unsigned, with unsigned math you can subtract a bigger number from a smaller number and get a correct positive result.

It's like with a 12 hour clock, present time 3 - start time 10 = 5 hours difference. We don't care that it is -5 hours since we are looking at hours -ago- just by subtracting start from present. Unsigned math takes care of that for us; so in base 12 (12 hour clock), 10 - 3 = 7, 3 - 10 = 5.

With 32 bits you have base 4,294,967,296. That many millseconds takes over 47 days to roll over but when it does, signed math will fail without extra code that unsigned math doesn't need.

You want, I'll post a sketch made to experiment with that shows how the bits come out.