   // Generate filtered versions of registration and data
   byte freg = getData(adc[8], 0);  
   byte now  = getData(adc[7], 7) | getData(adc[6], 6) | getData(adc[5], 5) | getData(adc[4], 4)
-            | getData(adc[3], 3) | getData(adc[7], 2) | getData(adc[1], 1) | getData(adc[0], 0);
+            | getData(adc[3], 3) | getData(adc[2], 2) | getData(adc[1], 1) | getData(adc[0], 0);
 
   // Show live diagnostics on LEDs
   writeLEDs(freg, now);
 
+#if defined(CFGEN_SEND_ADC_REPORTS)
+  if (now != sticky)
+  {
+    Serial.write(':');
+    Serial.write(REPORT_OK_ADC);
+    for (int i=8; i>=0; i--)
+    {
+      //in decimal ADC values are 10 bits (3 nybbles)
+      Serial.print(adc[i]);
+      Serial.print(" ");
+    }
+    Serial.println();
+  }
+#endif
+
+  
   // crank round the acquisition state machine
   switch (state)
   {

{
  // Read all 9 inputs (roughly) at same time
  adc[8] = analogRead(REG);
  
  adc[7] = analogRead(D7);
  adc[6] = analogRead(D6);
  adc[5] = analogRead(D5);

#define REPORT_OK_CARD       0x01
#define REPORT_OK_STATE      0x02
#define REPORT_OK_ROW        0x03
#define REPORT_OK_ADC        0x04
#define REPORT_ERR_LENGTH    0x81

typedef enum 
