Interrupt numbering mismatch: MEGA 2560

In particular, the AVR has "External Interrupt numbers" that it labels INT0, INT1, and so on. These don't match up with bit0 or bit1 of any port, and are scattered across multiple ports on MEGA2560.
The original design of attachInterrupt() uses the AVR designation (0 for INT0, etc) This was probably a mistake (they should have mapped the arduino pin numbers internally (although having attachInterrupt(2,...) be legal when (0,...) wasn't isn't exactly intuitive, either.)

Things got worse on MEGA, where the Arduino pins were arranged by function rather than port number, so all the serial ports are together, all the PWMs together. But the AVR ports and the interrupts are pretty scattered.

The standard now is to use:

attachInterrupt(digitalPinToInterrupt(pin), isrfunc, mode);

Where "digitalPinToInterrupt(pin)" is a relatively "new" feature. ("pin" is the Arduino pin number. But you have to make sure that it's capable of causing an interrupt!)