RandallR:
and his calculations will totally stop if interrupted
If his calculations get interrupted in the middle of accessing ISRValue (which is entirely possible since it is a 16 bit variable), then the value that gets used in his calculations will be completely invalid, and thus result in an invalid calculation. The canCheck variable does nothing to prevent this.