Index: /trunk/Mars/mcore/nova.h
===================================================================
--- /trunk/Mars/mcore/nova.h	(revision 18826)
+++ /trunk/Mars/mcore/nova.h	(revision 18827)
@@ -4,4 +4,5 @@
 #include <map>
 #include <string>
+#include <algorithm>
 
 #include <libnova/solar.h>
@@ -38,17 +39,24 @@
         LnLatPosn() { }
         LnLatPosn(const ln_lnlat_posn &pos) : ln_lnlat_posn(pos) { }
-        LnLatPosn(const std::string &obs)
+        LnLatPosn(std::string obs)
         {
 #ifndef __CINT__
             static const std::map<std::string, ln_lnlat_posn> lut =
             {
-                { "orm",  kORM  },
-                { "hawc", kHAWC },
-                { "spm",  kSPM  },
+                { "ORM",  kORM  },
+                { "HAWC", kHAWC },
+                { "SPM",  kSPM  },
             };
 
+            for (auto &c: obs)
+                c = toupper(c);
+
             const auto it = lut.find(obs);
-            *this = it==lut.end() ? ln_lnlat_posn({0,0}) : it->second;
-#endif
+            *this = it==lut.end() ? ln_lnlat_posn({std::numeric_limits<double>::quiet_NaN(),std::numeric_limits<double>::quiet_NaN()}) : it->second;
+#endif
+        }
+        bool isValid() const
+        {
+            return std::isfinite(lat) && std::isfinite(lng);
         }
     };
