Measuring car RPM is giving weird answers

Ok that makes perfect sense to me.

I fixed the delay thing and the volatile now so my code looks like this. I'm going to go and try it in the car:

byte RPMp = 3;

int MAP = 0;
int TPS = 0;
int KR = 0;
int AFR = 0;
double RPM = 0.0; 
byte a = 0;

volatile unsigned long currenttime = 0;
volatile unsigned int interval = 0;
unsigned long delaycounter = 0;
void sensorTest() {
 
 unsigned int avgrpm[] = {0,0,0,0,0,0,0,0,0,0};
 unsigned int finalrpm = 0;
 tft.setTextColor(ILI9341_WHITE);
 tft.setTextSize(2);

 currenttime = micros();
 attachInterrupt(1, interruptRoutine, FALLING);
 while(1){

   tft.setCursor(0, 0);    
   tft.println((float)analogRead(A7)*5/1023); 
   tft.println((float)analogRead(A6)*5/1023); 
   tft.println((float)analogRead(A5)*5/1023); 
   tft.println((float)analogRead(A4)*5*2.375/1023+6.3625); 
   
   RPM = (double)interval*0.000001;
   RPM = 60/RPM;
   avgrpm[a] = (unsigned int)RPM;
   finalrpm = 0;
   for(int b = 0; b<10; b++) {
 
     finalrpm += avgrpm[b];

   }
   finalrpm *= 0.1;
   tft.println(finalrpm); 
   delaycounter = micros();
   while((micros() - delaycounter) < 100000) {
   }

   delaycounter = 0;
   tft.fillRect(0, 0, 80, 80, ILI9341_BLACK);
   if(a>9)
     a=0;   
 }

}


void interruptRoutine() {
 interval = micros() - currenttime;
 currenttime += interval;
 a++;
}