--- gtk_ardour/main.cc.orig	2003-09-30 21:47:14.000000000 +0200
+++ gtk_ardour/main.cc	2003-09-30 21:48:23.000000000 +0200
@@ -26,7 +26,6 @@
 #include <signal.h>
 #include <unistd.h>
 #include <mcheck.h>
-#include <locale.h>
 
 #include <pbd/error.h>
 #include <pbd/textreceiver.h>
@@ -213,12 +212,6 @@
 	
 	gtk_set_locale ();
 	
-	/* force use of non-localized representation of decimal point, 
-	   since we use it a lot in XML files and so forth.
-	*/
-
-	setlocale (LC_NUMERIC, "POSIX");
-	
 	bindtextdomain (PACKAGE, LOCALEDIR);
 	textdomain (PACKAGE);
 
--- libs/ardour/io.cc.orig	2003-09-30 21:47:57.000000000 +0200
+++ libs/ardour/io.cc	2003-09-30 21:51:36.000000000 +0200
@@ -21,6 +21,7 @@
 #include <algorithm>
 #include <unistd.h>
 #include <cmath>
+#include <locale.h>
 
 #include <sigc++/bind.h>
 
@@ -1023,7 +1024,13 @@
 	bool need_outs = true;
 	LockMonitor lm (io_lock, __LINE__, __FILE__);
 
-	node->add_property("name", _name);	
+	/* force use of non-localized representation of decimal point,
+	   since we use it a lot in XML files and so forth.
+	*/
+
+    setlocale (LC_NUMERIC, "C");
+
+	node->add_property("name", _name);
 	snprintf (buf, sizeof(buf), "%Lu", id());
 	node->add_property("id", buf);
 
@@ -1137,6 +1144,8 @@
 
 	/* XXX same for pan etc. */
 
+    setlocale (LC_NUMERIC, "");
+
 	return *node;
 }
 
@@ -1178,6 +1187,12 @@
 {
 	const XMLProperty* prop;
 
+	/* force use of non-localized representation of decimal point,
+	   since we use it a lot in XML files and so forth.
+	*/
+
+    setlocale (LC_NUMERIC, "C");
+
 	if (node.name() != state_node_name) {
 		error << compose(_("incorrect XML node \"%1\" passed to IO object"), node.name()) << endmsg;
 		return -1;
@@ -1283,6 +1298,8 @@
 		pending_state_node = new XMLNode (node);
 	}
 
+    setlocale (LC_NUMERIC, "");
+
 	return 0;
 }
 
