diff -u -r boost/numeric/interval/detail/msvc_rounding_control.hpp /cygdrive/c/Users/schulte/boost/numeric/interval/detail/msvc_rounding_control.hpp --- boost/numeric/interval/detail/msvc_rounding_control.hpp 2010-11-10 16:52:44.696786200 +0100 +++ /cygdrive/c/Users/schulte/boost/numeric/interval/detail/msvc_rounding_control.hpp 2010-11-10 16:01:56.730082700 +0100 @@ -79,7 +79,11 @@ static void get_rounding_mode(rounding_mode& mode) { mode = msvc2hard(_control87(0, 0)); } static void set_rounding_mode(const rounding_mode mode) +#if defined(_M_X64) || defined(_M_IA64) + { _control87(hard2msvc(mode), _MCW_EM | _MCW_RC ); } +#else { _control87(hard2msvc(mode), _MCW_EM | _MCW_RC | _MCW_PC | _MCW_IC); } +#endif static double to_int(const double& x) { return rint(x); } };