diff --git a/CMakeLists.txt b/CMakeLists.txt
index 92ac20f73b51bbfbcf8194549cb97202523ffd2f..f1f95f7e8da3d743fe47e1d2577adecf149e844a 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -447,6 +447,11 @@ ELSE(KWSYS_IOS_USE_ANSI AND NOT WATCOM)
   KWSYS_PLATFORM_CXX_TEST(KWSYS_STL_STRING_HAVE_ISTREAM
     "Checking whether stl string has istream operator>>" DIRECT)
 ENDIF(KWSYS_IOS_USE_ANSI AND NOT WATCOM)
+SET(KWSYS_PLATFORM_CXX_TEST_DEFINES
+  -DKWSYS_IOS_USE_ANSI=${KWSYS_IOS_USE_ANSI}
+  -DKWSYS_IOS_HAVE_STD=${KWSYS_IOS_HAVE_STD})
+KWSYS_PLATFORM_CXX_TEST(KWSYS_IOS_HAVE_BINARY
+  "Checking whether ios has binary openmode" DIRECT)
 SET(KWSYS_PLATFORM_CXX_TEST_DEFINES)
 
 KWSYS_PLATFORM_CXX_TEST(KWSYS_CXX_HAS_NULL_TEMPLATE_ARGS
diff --git a/Configure.hxx.in b/Configure.hxx.in
index 4916c12cbbed03e7d6c38ee6c3d3b65768f695a1..444f46f310b793f71353ac73278fb3b8c41856e9 100644
--- a/Configure.hxx.in
+++ b/Configure.hxx.in
@@ -32,6 +32,9 @@
 /* Whether old C++ <strstrea.h> header is to be used.  */
 #define @KWSYS_NAMESPACE@_IOS_USE_STRSTREA_H @KWSYS_IOS_USE_STRSTREA_H@
 
+/* Whether C++ streams support the ios::binary openmode.  */
+#define @KWSYS_NAMESPACE@_IOS_HAVE_BINARY @KWSYS_IOS_HAVE_BINARY@
+
 /* Whether STL is in std namespace.  */
 #define @KWSYS_NAMESPACE@_STL_HAVE_STD @KWSYS_STL_HAVE_STD@
 
@@ -63,6 +66,13 @@
 # define @KWSYS_NAMESPACE@_ios @KWSYS_NAMESPACE@_ios
 #endif
 
+/* Define the ios::binary openmode macro.  */
+#if @KWSYS_NAMESPACE@_IOS_HAVE_BINARY
+# define @KWSYS_NAMESPACE@_ios_binary @KWSYS_NAMESPACE@_ios::ios::binary
+#else
+# define @KWSYS_NAMESPACE@_ios_binary 0
+#endif
+
 /* Whether the cstddef header is available.  */
 #define @KWSYS_NAMESPACE@_CXX_HAS_CSTDDEF @KWSYS_CXX_HAS_CSTDDEF@
 
@@ -133,6 +143,7 @@
 #  define kwsys_stl @KWSYS_NAMESPACE@_stl
 #  define kwsys_ios @KWSYS_NAMESPACE@_ios
 #  define kwsys     @KWSYS_NAMESPACE@
+#  define kwsys_ios_binary @KWSYS_NAMESPACE@_ios_binary
 # endif
 # define KWSYS_NAME_IS_KWSYS            @KWSYS_NAMESPACE@_NAME_IS_KWSYS
 # define KWSYS_STL_HAVE_STD             @KWSYS_NAMESPACE@_STL_HAVE_STD
@@ -141,6 +152,7 @@
 # define KWSYS_IOS_USE_SSTREAM          @KWSYS_NAMESPACE@_IOS_USE_SSTREAM
 # define KWSYS_IOS_USE_STRSTREAM_H      @KWSYS_NAMESPACE@_IOS_USE_STRSTREAM_H
 # define KWSYS_IOS_USE_STRSTREA_H       @KWSYS_NAMESPACE@_IOS_USE_STRSTREA_H
+# define KWSYS_IOS_HAVE_BINARY          @KWSYS_NAMESPACE@_IOS_HAVE_BINARY
 # define KWSYS_STAT_HAS_ST_MTIM         @KWSYS_NAMESPACE@_STAT_HAS_ST_MTIM
 # define KWSYS_CXX_HAS_CSTDDEF          @KWSYS_NAMESPACE@_CXX_HAS_CSTDDEF
 # define KWSYS_STL_STRING_HAVE_OSTREAM  @KWSYS_NAMESPACE@_STL_STRING_HAVE_OSTREAM
diff --git a/kwsysDateStamp.cmake b/kwsysDateStamp.cmake
index 7c7896e01b337457b9e2ded4dc69d9c5571b74da..64f208c013c506d8f18f1a43d1cd2c01b944628e 100644
--- a/kwsysDateStamp.cmake
+++ b/kwsysDateStamp.cmake
@@ -7,4 +7,4 @@ SET(KWSYS_DATE_STAMP_YEAR  2009)
 SET(KWSYS_DATE_STAMP_MONTH 08)
 
 # KWSys version date day component.  Format is DD.
-SET(KWSYS_DATE_STAMP_DAY   06)
+SET(KWSYS_DATE_STAMP_DAY   31)
diff --git a/kwsysPlatformTestsCXX.cxx b/kwsysPlatformTestsCXX.cxx
index 3d5550dd600f2adae6355d5036ee15d6d722e330..502e2d88b170b36f2acd40e5f09a01e03888036f 100644
--- a/kwsysPlatformTestsCXX.cxx
+++ b/kwsysPlatformTestsCXX.cxx
@@ -294,6 +294,17 @@ int main()
 }
 #endif
 
+#ifdef TEST_KWSYS_IOS_HAVE_BINARY
+int test_binary(int, ...)
+{
+  return 0;
+}
+int main()
+{
+  return test_binary(1, kwsys_ios::ios::binary);
+}
+#endif
+
 #ifdef TEST_KWSYS_IOS_HAS_ISTREAM_LONG_LONG
 int test_istream(kwsys_ios::istream& is, long long& x)
 {
diff --git a/testIOS.cxx b/testIOS.cxx
index 5b65d20b5a326cd80022dba415a9fefb9137c2d3..2839109278ff1f7b90e2eea6eeb376308c4e9388 100644
--- a/testIOS.cxx
+++ b/testIOS.cxx
@@ -1,6 +1,7 @@
 #include "kwsysPrivate.h"
 #include KWSYS_HEADER(stl/vector)
 #include KWSYS_HEADER(ios/sstream)
+#include KWSYS_HEADER(ios/fstream)
 #include KWSYS_HEADER(ios/iostream)
 
 // Work-around CMake dependency scanning limitation.  This must
@@ -9,6 +10,7 @@
 # include "kwsys_stl_string.hxx.in"
 # include "kwsys_stl_vector.h.in"
 # include "kwsys_ios_sstream.h.in"
+# include "kwsys_ios_fstream.h.in"
 # include "kwsys_ios_iostream.h.in"
 #endif
 
@@ -142,6 +144,13 @@ int testIOS(int, char*[])
     return 1;
     }
 
+  // Just try to compile this.
+  if(x == 12345)
+    {
+    kwsys_ios::ifstream fin("/does_not_exist",
+                            kwsys_ios::ios::in | kwsys_ios_binary);
+    }
+
   kwsys_ios::cout << "IOS tests passed" << kwsys_ios::endl;
   return 0;
 }