MCUSR register always reads zero

Hi, I tried using the code example at:

I am using an Arduino MEGA2560 board
I only ever get MCUSR:0 displayed. Originally I had a watchdog going (which was timing out as expected using a delay in the code) and I wanted to display a message to prove that the timer timed out. So I’m resorting to a simpler (I thought) means of just proved that I can see the reset bit set after I pres reset on the board. Is the bootloader maybe messing things up?
I’m using this code: If I press reset, I was hoping to see the “reset was pressed” message.

void setup() {

 Serial.print("MCUSR: ");
 if (MCUSR & _BV(EXTRF)){
     // Reset button or otherwise some software reset
     Serial.println("Reset button was pressed.");
 if (MCUSR & (_BV(BORF) | _BV(PORF))){
      // Brownout or Power On
      Serial.println("Power loss occured!");
 if (MCUSR & _BV(WDRF)){
      //Watchdog Reset
      Serial.println("Watchdog Reset");
 // Clear all MCUSR registers immediately for 'next use'
 MCUSR = 0;
void loop()

I introduced a watchdog timeout by having this in setup:

  MCUSR = 0;
  // enable watchdog system reset
  WDTCSR |= (1 << WDCE) | (1 << WDE);
  // 256K cycles ~ 2 seconds
  WDTCSR = (1 << WDE) | (1 << WDP2) | (1 << WDP1) | (1 << WDP0);

and by delaying for more than 2 seconds in the main loop
That just resulted in a continually displayed:
MCUSR = 0; down the screen on every timeout, but no message as in the switch statement.
Thanks and regards

Would this link be of any use to you?

Thanks - I'll have a look. Probably relates to my issue Edit: It still gives MCUSR = 0 I probably have an older bootloader? Russell