diff --git a/CREDITS.txt b/CREDITS.txt
index 8187186f9b9733396dfeccc15e512a328a5ce129..f2756caf9f524efb5edd4b960c43be42f61f733e 100644
--- a/CREDITS.txt
+++ b/CREDITS.txt
@@ -5,6 +5,7 @@ We discourage including attribution as comments in the code, instead we intend t
 Aparapi Contributors.  Thanks to all. 
 
 Witold Bolt provided patch for issue #5. Added and tested Mac OS support. Oct 12th 2011 
+kenneth@hexad.dk provided patch for issue #11 (correcting conversion of Java Nan and Infinity values to OpenCL equiv). Oct 28th 2011
 
   
 
diff --git a/com.amd.aparapi/src/java/com/amd/aparapi/BlockWriter.java b/com.amd.aparapi/src/java/com/amd/aparapi/BlockWriter.java
index e46728b797189de28aa84da80e66ee2ee6e9813a..d37ea95b79b166d9f5b9d5ffead4a5f2820de904 100644
--- a/com.amd.aparapi/src/java/com/amd/aparapi/BlockWriter.java
+++ b/com.amd.aparapi/src/java/com/amd/aparapi/BlockWriter.java
@@ -442,12 +442,39 @@ abstract class BlockWriter{
       } else if (_instruction instanceof Constant<?>) {
          Constant<?> constantInstruction = (Constant<?>) _instruction;
          Object value = constantInstruction.getValue();
-         write(value.toString());
+
          if (value instanceof Float) {
-            write("f");
-         }
-         if (value instanceof Long) {
-            write("L");
+
+            Float f = (Float) value;
+            if (f.isNaN()) {
+               write("NAN");
+            } else if (f.isInfinite()) {
+               if (f < 0){
+                  write("-");
+               }
+               write("INFINITY");
+            } else {
+               write(value.toString());
+               write("f");
+            }
+         } else if (value instanceof Double) {
+
+            Double d = (Double) value;
+            if (d.isNaN()) {
+               write("NAN");
+            } else if (d.isInfinite()) {
+               if (d < 0){
+                  write("-");
+               }
+               write("INFINITY");
+            } else {
+               write(value.toString());
+            }
+         } else {
+            write(value.toString());
+            if (value instanceof Long) {
+               write("L");
+            }
          }
 
       } else if (_instruction instanceof AccessLocalVariable) {