Since I couldnt get the delay to go above 30s I tried running the delay 6 times in a row.
The problem with the original code, which is not fixed in the new code, is that literal constants (30000) are interpreted as ints.
If you change the literal to 60000, that value is not in the range that fits in an int (-32768 to 32767). You can tell the compiler that the literal constant should be treated differently.
Append a U to tell the compiler that the value is to be treated as an unsigned int.
Append an L to tell the compiler that the value is to be treated as a long.
Combine them to tell the compiler that the value is to be treated as an unsigned long.
delay(1);
delay(val);
delay(1);
delay(val);
delay(1);
delay(val);
delay(1);
delay(val);
delay(1);
delay(val);
What's with the delay(1)s?
Look at for loops, instead of cut and paste, when you need to do something more than once.