Hello,
You are using a delay in your main program loop and a delay in your interrupt. If the processor is inside the delay routine when the interrupt fires then you will re-enter the delay routine causing stack corruption.
Think of it like a football penalty shoot out, you pick up the ball place it in front of the goal, run up to the ball and about to kick it when the interrupt happens. The interrupt repeats the setup to pick up the ball, place it in front of the goal and then shoots. When the interrupt has left the ball is already in the back of the net so you are left kicking air.
Delays inside interrupts are therefore risky at best and should be avoided as much as possible. Its not a bug as such, just something to be aware of. The same would go for things like calls to the LCD component, you might be right in the middle of a write operation in your main loop when an interrupt fires and starts talking to the LCD again. This would almost certainly corrupt the data shown on the LCD.
However if you really need to add delays into interrupts without causing the corruption then you can create your own delay routine.
To do this add a C icon where you want to add the delay and add the following code.
The nop function is basically a no operation assembler command which consumes a single instruction. On AVR you get approx one instruction per clock cycle so at 8MHz, 8 nops would give you a delay of 1us.
If you need to you can then multiply this up by using a loop icon to repeat the C code icon as needed.