     SEN_TRACE("isr: %12lu %12lu spike\n",delta,sen_movav1);   
     return;
   }
-  // Compute the moving average (approximation) of all delta's (but reset moving average after a restart)
+  // Compute the (approximation of) the moving average of all accepted delta's (but initialize moving average after a restart)
   sen_movav2= (sen_count2==0) ? delta : (sen_movav2*SEN_SIZE2 + delta - sen_movav2)/SEN_SIZE2;
   SEN_TRACE("isr: %12lu %12lu av=%lu\n",delta,sen_movav1,sen_movav2);  
-  // Step counter (when warpping, skip 0)
+  // Step counter (when wrapping, skip 0)
   sen_count2++; 
   if( sen_count2==0 ) sen_count2++; 
 }
 
-// Returns the duration of one rotation in us.
-// Returns 0 when there is no rotation (detected the last SEN_IDLE us).
+// Returns the duration of one rotation in us (smoothed).
+// Returns 0 when there is no rotation (detected no rotation during the last SEN_IDLE us).
 unsigned long sen_get(void) {
   unsigned long delta;
   noInterrupts();
-    // Get the moving average of the delta's from the isr
+    // Get the moving average of the delta's from the ISR
     delta= sen_movav2;
     // Check if the last pulse was too old, flag
     if( micros()- sen_time >= SEN_IDLE ) { 
       if( sen_count1>0 ) { SEN_TRACE("isr: end\n"); sen_count1=0; } // sen_count1 is misused to only trace 'end' once
-      sen_time = micros()-SEN_IDLE; // Reset sen_time (needed to prevent wrap-around artefacts)
-      delta=0;
+      sen_time = micros()-SEN_IDLE; // Reset sen_time (needed to prevent wrap-around artifacts)
+      delta= 0;
     }
   interrupts();
   return delta;


// Shows the current delta on the display (using current units)
void show_delta( unsigned long delta, int units ) {
  if( delta==0 ) { 
    switch( units ) { // Font is patched to have -. at 0x1A
      case 0: dsp_set("-"); break;
      case 1: dsp_set("\x1A-"); break;
      case 2: dsp_set("\x1A--"); break;
    }
  } else {
    int rpm= (60*1000*1000+delta/2)/delta;  // units: rotations per minute
    int ms10= (delta+50)/100;               // units: 1/10 microseconds
    int hz100= (100*1000*1000+delta)/delta; // units: 1/100 herz
    switch( units ) {
      case 0: dsp_set(tostr(rpm,0)); break;
      case 1: dsp_set(tostr(ms10,1)); break;
      case 2: dsp_set(tostr(hz100,2)); break;
    }
  }

    SEN_TRACE("isr: %12lu %12lu start\n",delta,sen_movav1);   
    return; 
  }
  // Maintain (approximation of) the moving average of all delta's (but initialize moving average after a restart)
  sen_movav1= (sen_count1==0) ? delta : (sen_movav1*SEN_SIZE1 + delta - sen_movav1)/SEN_SIZE1;
  // Bail out if restarting
  if( sen_count1<SEN_COUNT ) {
