Index: trunk/BNC/src/PPP/pppEphPool.cpp
===================================================================
--- trunk/BNC/src/PPP/pppEphPool.cpp	(revision 8212)
+++ trunk/BNC/src/PPP/pppEphPool.cpp	(revision 8215)
@@ -26,5 +26,6 @@
 /////////////////////////////////////////////////////////////////////////////
 void t_pppEphPool::putEphemeris(t_eph* eph) {
-  if (eph && eph->checkState() != t_eph::bad) {
+  if (eph && (eph->checkState() != t_eph::bad ||
+              eph->checkState() != t_eph::unhealthy))  {
     _satEphPool[eph->prn().toInt()].putEphemeris(_maxQueueSize, eph);
   }
Index: trunk/BNC/src/bnccore.cpp
===================================================================
--- trunk/BNC/src/bnccore.cpp	(revision 8212)
+++ trunk/BNC/src/bnccore.cpp	(revision 8215)
@@ -209,4 +209,7 @@
     return failure;
   }
+  else if (eph->checkState() == t_eph::unhealthy) {
+    messagePrivate("UNHEALTHY EPHEMERIS\n" + eph->toString(3.0).toLatin1());
+  }
   printEphHeader();
   printEph(*eph, (ircPut == success));
Index: trunk/BNC/src/bncephuser.cpp
===================================================================
--- trunk/BNC/src/bncephuser.cpp	(revision 8212)
+++ trunk/BNC/src/bncephuser.cpp	(revision 8215)
@@ -189,6 +189,5 @@
   // -------------------
   if (eph->isUnhealthy()) {
-    eph->setCheckState(t_eph::bad);
-    return;
+    eph->setCheckState(t_eph::unhealthy);
   }
 
Index: trunk/BNC/src/ephemeris.cpp
===================================================================
--- trunk/BNC/src/ephemeris.cpp	(revision 8212)
+++ trunk/BNC/src/ephemeris.cpp	(revision 8215)
@@ -728,15 +728,20 @@
 ////////////////////////////////////////////////////////////////////////////
 unsigned int t_ephGlo::isUnhealthy() const {
-  if      (_health == 0 && _almanac_health == 0) {
-    return 1;
-  }
-  else if (_health == 1 && _almanac_health == 0) {
-    return 1;
-  }
-  else if (_health == 1 && _almanac_health == 1) {
-    return 1;
-  }
-
-  return 0;
+
+  switch (_almanac_health_availablility_indicator) {
+    case 1:
+      if ((_health == 0 && _almanac_health == 0) ||
+          (_health == 1 && _almanac_health == 0) ||
+          (_health == 1 && _almanac_health == 1)) {
+        return 1;
+      }
+      break;
+    case 0:
+      if (_health) {
+        return 1;
+      }
+      break;
+  }
+  return 0; /* (_health == 0 && _almanac_health == 1) or (_health == 0) */
 }
 
Index: trunk/BNC/src/ephemeris.h
===================================================================
--- trunk/BNC/src/ephemeris.h	(revision 8212)
+++ trunk/BNC/src/ephemeris.h	(revision 8215)
@@ -18,5 +18,5 @@
  public:
   enum e_type {unknown, GPS, QZSS, GLONASS, Galileo, SBAS, BDS, IRNSS};
-  enum e_checkState {unchecked, ok, bad, outdated};
+  enum e_checkState {unchecked, ok, bad, outdated, unhealthy};
 
   t_eph();
