diff --git a/modules/io/src/mol/pdb_writer.cc b/modules/io/src/mol/pdb_writer.cc
index dc9fbe702be5fe8ca5e2ce4f0b83f48f2a682eaa..7b89e1f09cbfea8857fb9057285fcfd16f515c7f 100644
--- a/modules/io/src/mol/pdb_writer.cc
+++ b/modules/io/src/mol/pdb_writer.cc
@@ -19,8 +19,10 @@
 /*
   Author: Marco Biasini
  */
+#include <locale>
 #include <boost/format.hpp>
 #include <string.h>
+
 #include <ost/io/io_exception.hh>
 
 #include "pdb_writer.hh"
@@ -257,6 +259,17 @@ private:
   std::map<long,int>& atom_indices_;
 };
 
+struct ForcePOSIX {
+  std::locale old_locale;
+  ForcePOSIX(){
+    old_locale=std::locale();
+    setlocale(LC_NUMERIC, "POSIX");
+  }
+  ~ForcePOSIX(){
+    setlocale(LC_NUMERIC, old_locale.name().c_str());
+  }
+};
+
 }
 
 PDBWriter::PDBWriter(std::ostream& stream):
@@ -295,6 +308,7 @@ void PDBWriter::WriteModelTrailer()
 template <typename H>
 void PDBWriter::WriteModel(H ent)
 {
+  ForcePOSIX posix = ForcePOSIX();
   this->WriteModelLeader();
   PDBWriterImpl writer(outstream_,line_, atom_indices_);
   if (PDB::Flags() & PDB::PQR_FORMAT) {
@@ -318,6 +332,7 @@ void PDBWriter::Write(const mol::EntityHandle& ent)
 
 void PDBWriter::Write(const mol::AtomHandleList& atoms)
 {
+  ForcePOSIX posix = ForcePOSIX();
   this->WriteModelLeader();
   int counter=1;
   mol::ChainHandle last_chain;