Measuring car RPM is giving weird answers

isn't this:

while((micros() - delaycounter) < 100000) {
    }

just a long-winded this:

delay(100);

they both block...

my point was that if a is incremented in your ISR, (and that WILL happen if your ISR is called during a blocking delay like the above two, you could miss an increment of the a when you get back to your array management...