     Serial.print(tachDuration1);
     Serial.print(", t2: ");
     Serial.print(tachDuration2);
-    Serial.println();
+    Serial.print(", ");
   }
   
   //Calculate Weighted Average
-  return (3*tachDuration0 + 2*tachDuration1 + 1*tachDuration2)/6;
+  unsigned long average = (3*tachDuration0 + 2*tachDuration1 + 1*tachDuration2)/6;
+  return 60.0 * 1000000 / average;
 }
 
 void enableCoil()
 {
   //Enable Coil Firing
   ignitionMode = WAIT;
-  ISR_IGNITION();
 }
 
 void disableCoil()
 {
+  //Disable Coil Firing
+  Timer1.stop();
   ignitionMode = OFF;
-  Timer1.stop();
 }
 
 void chargeCoil()

void fireMultiple()
{
  fireCoil();
  for(int i = 1; i <= multiCount; i++)
  {
    delayMicroseconds(multiDelay);
    fireCoil();

  attachInterrupt(TACH_PIN - 2, ISR_TACH, RISING);
  attachInterrupt(ACTIVATION_PIN - 2, ISR_ACTIVE, CHANGE);
  
  Timer1.initialize();
  Timer1.attachInterrupt(ISR_IGNITION);
  Timer1.start();
  
  if (debug)
  {
