For gcc>=6 JSON_USE_INT64_DOUBLE_CONVERSION
diff --git a/include/json/config.h b/include/json/config.h
index 1b0581f..51027dd 100644
--- a/include/json/config.h
+++ b/include/json/config.h
@@ -114,6 +114,10 @@
 #define JSONCPP_DEPRECATED(message)
 #endif // if !defined(JSONCPP_DEPRECATED)
 
+#if __GNUC__ >= 6
+#  define JSON_USE_INT64_DOUBLE_CONVERSION 1
+#endif
+
 namespace Json {
 typedef int Int;
 typedef unsigned int UInt;
diff --git a/src/lib_json/json_value.cpp b/src/lib_json/json_value.cpp
index a1962e6..1f6425f 100644
--- a/src/lib_json/json_value.cpp
+++ b/src/lib_json/json_value.cpp
@@ -784,7 +784,8 @@
 #if !defined(JSON_USE_INT64_DOUBLE_CONVERSION)
     return static_cast<float>(value_.uint_);
 #else  // if !defined(JSON_USE_INT64_DOUBLE_CONVERSION)
-    return integerToDouble(value_.uint_);
+    // This can fail (silently?) if the value is bigger than MAX_FLOAT.
+    return static_cast<float>(integerToDouble(value_.uint_));
 #endif // if !defined(JSON_USE_INT64_DOUBLE_CONVERSION)
   case realValue:
     return static_cast<float>(value_.real_);