   } // if (convertDate)
   return (DST);
 }
+
+// Dislpays Hdop or horizontal position error on the LCD
+void displayHdopOnLCD (uint32_t Hdop, bool HdopSelect, unsigned long now,
+                       unsigned long* prevHdopTime, bool* hdopToggle) {
+  if (!HdopSelect) {
+    // Display Horizontal Dilution of Precision (Hdop) with the format X.X
+    // It comes in from the GPS module as XXX
+    // If you care how Hdop is computed (I don't :-)), see the following:
+    // http://www2.unb.ca/gge/Resources/gpsworld.may99.pdf
+    Hdop = (float)Hdop / 100.0f; // Hdop in X.X format
+    lcd.print(" Hdop:");
+    if (Hdop < 10.0f) {
+      lcd.print((float)Hdop);
+    }
+    else {
+      // Hdop value too large for my LCD, so cross it out
+      // Toggle Hdop indicator every TOGGLETIME_INTERVAL seconds
+      if (now - *prevHdopTime > TOGGLETIME_INTERVAL / 3) {
+        *prevHdopTime = now;
+        if (*hdopToggle) {
+          *hdopToggle = false;
+          lcd.print("XXX");
+        }
+        else {
+          *hdopToggle = true;
+          lcd.print("   ");
+        } // if (hdopToggle)
+      } // if (now - prevHdopTime > TOGGLETIME_INTERVAL)
+    } // if (Hdop < 10.0f)
+  }
+  else { // if (!displayHdop)
+    // Display horizontal position error in feet
+    float hError = Hdop / 100.0f; // Error in X.X format
+    hError *= GPS_RECEIVER_ERROR; // Error in meters
+    hError *= _GPS_FEET_PER_METER; // Error in feet
+    lcd.print(" Err: ");
+    if (hError < 100.0f) {
+      lcd.print((uint8_t)hError);
+      if (hError < 10.0f) {
+        lcd.print("f "); // feet
+      }
+      else {
+        lcd.print("f"); // feet
+      }
+    }
+    else { // if (hError < 100.0f)
+      // horizontal position error value too large for my LCD, so cross it out
+      // Toggle Hdop indicator every TOGGLETIME_INTERVAL seconds
+      if (now - *prevHdopTime > TOGGLETIME_INTERVAL / 3) {
+        *prevHdopTime = now;
+        if (*hdopToggle) {
+          *hdopToggle = false;
+          lcd.print("XXX");
+        }
+        else {
+          *hdopToggle = true;
+          lcd.print("   ");
+        } // if (hdopToggle)
+      } // if (now - prevHdopTime > TOGGLETIME_INTERVAL)
+    } // if (hError < 100.0f)
+  } // if (displayHdop)
+}
+
 #endif // #ifndef _16x2

    GPSData.altitude   = 555.0d;
#ifndef _16x2
    GPSData.heading    = 60.0d; // ENE or NE (16 cardinal points or 8 cardinal points)
    GPSData.hdop       = 150;
    GPSData.year       = 2017;
    GPSData.month      = 11; // Day before ST starts
    GPSData.day        = 5;  //      "

          lcd.print(" ST");
        }
      }
      else { // if (!localUTCTimeDate)
        displayHdopOnLCD (GPSData.hdop, displayHdop, now,
                          &prevHdopTime, &hdopToggle);
      } // if (!localUTCTimeDate)
    } // if ((digitalRead(ALTITUDE_DATE_TIME_SW)))
    else {
      displayHdopOnLCD (GPSData.hdop, displayHdop, now,
                        &prevHdopTime, &hdopToggle);
    } // if ((digitalRead(ALTITUDE_DATE_TIME_SW)))
    lcd.setCursor (0, 2); // Go to 3rd line
    lcd.print("Spd: ");
