diff --git a/src/interfaces/ecpg/ecpglib/execute.c b/src/interfaces/ecpg/ecpglib/execute.c
index d0aef8a5c6a56a9f5e257434d00f9440d7abdeee..f65ede58368cbe25ac84b209ec807baeb8edb291 100644
--- a/src/interfaces/ecpg/ecpglib/execute.c
+++ b/src/interfaces/ecpg/ecpglib/execute.c
@@ -1,4 +1,4 @@
-/* $PostgreSQL: pgsql/src/interfaces/ecpg/ecpglib/execute.c,v 1.93 2010/02/04 09:41:34 meskes Exp $ */
+/* $PostgreSQL: pgsql/src/interfaces/ecpg/ecpglib/execute.c,v 1.94 2010/02/16 18:41:23 meskes Exp $ */
 
 /*
  * The aim is to get a simpler inteface to the database routines.
@@ -468,15 +468,15 @@ ecpg_store_result(const PGresult *results, int act_field,
 static void
 sprintf_double_value(char *ptr, double value, const char *delim)
 {
-	if (isinf(value))
+	if (isnan(value))
+		sprintf(ptr, "%s%s", "NaN", delim);
+	else if (isinf(value))
 	{
 		if (value < 0)
 			sprintf(ptr, "%s%s", "-Infinity", delim);
 		else
 			sprintf(ptr, "%s%s", "Infinity", delim);
 	}
-	else if (isnan(value))
-		sprintf(ptr, "%s%s", "NaN", delim);
 	else
 		sprintf(ptr, "%.14g%s", value, delim);
 }
@@ -484,15 +484,15 @@ sprintf_double_value(char *ptr, double value, const char *delim)
 static void
 sprintf_float_value(char *ptr, float value, const char *delim)
 {
-	if (isinf(value))
+	if (isnan(value))
+		sprintf(ptr, "%s%s", "NaN", delim);
+	else if (isinf(value))
 	{
 		if (value < 0)
 			sprintf(ptr, "%s%s", "-Infinity", delim);
 		else
 			sprintf(ptr, "%s%s", "Infinity", delim);
 	}
-	else if (isnan(value))
-		sprintf(ptr, "%s%s", "NaN", delim);
 	else
 		sprintf(ptr, "%.14g%s", value, delim);
 }
diff --git a/src/interfaces/ecpg/test/expected/pgtypeslib-nan_test.c b/src/interfaces/ecpg/test/expected/pgtypeslib-nan_test.c
index 6b15abe8f10a879c340f5ddcbb2646476a23e141..d8c654f14305907f49295da8b5021b22fccdd655 100644
--- a/src/interfaces/ecpg/test/expected/pgtypeslib-nan_test.c
+++ b/src/interfaces/ecpg/test/expected/pgtypeslib-nan_test.c
@@ -104,10 +104,10 @@ if (sqlca.sqlcode < 0) sqlprint ( );}
 
 		if (sqlca.sqlcode)
 			break;
-		if (isinf(d))
-			printf("%d %sInf '%s'\n", id, (d < 0 ? "-" : "+"), val);
 		if (isnan(d))
 			printf("%d  NaN '%s'\n", id, val);
+		else if (isinf(d))
+			printf("%d %sInf '%s'\n", id, (d < 0 ? "-" : "+"), val);
 
 		{ ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "insert into nantest1 ( id , d ) values ( $1  + 3 , $2  )", 
 	ECPGt_int,&(id),(long)1,(long)1,sizeof(int), 
diff --git a/src/interfaces/ecpg/test/pgtypeslib/nan_test.pgc b/src/interfaces/ecpg/test/pgtypeslib/nan_test.pgc
index 7aa99b00d12503bd12cd8a0e4bd5d760b7ab074f..a136867bbdc83125174e280684861635cc6e10b9 100644
--- a/src/interfaces/ecpg/test/pgtypeslib/nan_test.pgc
+++ b/src/interfaces/ecpg/test/pgtypeslib/nan_test.pgc
@@ -37,10 +37,10 @@ main(void)
 		exec sql fetch from cur into :id, :d, :val;
 		if (sqlca.sqlcode)
 			break;
-		if (isinf(d))
-			printf("%d %sInf '%s'\n", id, (d < 0 ? "-" : "+"), val);
 		if (isnan(d))
 			printf("%d  NaN '%s'\n", id, val);
+		else if (isinf(d))
+			printf("%d %sInf '%s'\n", id, (d < 0 ? "-" : "+"), val);
 
 		exec sql insert into nantest1 (id, d) values (:id + 3, :d);
 		exec sql insert into nantest1 (id, d) values (:id + 6, :val);