Index: trunk/BNC/src/pppCrdFile.cpp
===================================================================
--- trunk/BNC/src/pppCrdFile.cpp	(revision 11027)
+++ trunk/BNC/src/pppCrdFile.cpp	(revision 11096)
@@ -43,4 +43,5 @@
 #include <cstdlib>
 #include <fstream>
+#include <locale>
 #include <sstream>
 #include "pppCrdFile.h"
@@ -63,4 +64,16 @@
   double sign = (d < 0.0) ? -1.0 : 1.0;
   return sign * (fabs(d) + m / 60.0 + s / 3600.0);
+}
+
+// Convert a number token independent of the process locale: atof() follows
+// LC_NUMERIC, which Qt sets from the environment, so with e.g. a German
+// locale "123.7785" would be read as 123.
+//////////////////////////////////////////////////////////////////////////////
+static double toDouble(const string& str) {
+  istringstream in(str);
+  in.imbue(locale::classic());
+  double value = 0.0;
+  in >> value;
+  return value;
 }
 
@@ -133,9 +146,9 @@
       }
       else if (token.compare(0, 2, "H:") == 0) {
-        hgt = atof(token.substr(2).c_str());
+        hgt = toDouble(token.substr(2));
         haveHgt = true;
       }
       else if (token.compare(0, 6, "EPOCH:") == 0) {
-        staInfo._epoch = atof(token.substr(6).c_str());
+        staInfo._epoch = toDouble(token.substr(6));
       }
       else if (token.compare(0, 4, "VEL:") == 0) {
