Hi Rob,
The IOC trips the interrupt on any change of the state on a digital pin. An interrupt will trip when the pin goes low and again when the pin goes high - provided you read the state of the pin in between. So in the ISR you need to read the state of switch and determine if it was pushed or released (and don't forget about the contact bounce). If it's determined that the interrupt tripped because the button was released you don't set the MODEFLAG.

And, once again, the ADC can NOT generate an interrupt when the analog voltage on the input changes. It won't work with IOC. Any pin configured as analog input will always read '1' and will never trip the IOC or INT interrupts.
Depending on what you want to do you might be able to use the comparator, they can be setup to trip an interrupt when their respective output changes state.

/Henrik.