diff -Naurd mpfr-3.1.4-a/PATCHES mpfr-3.1.4-b/PATCHES
--- mpfr-3.1.4-a/PATCHES	2016-05-22 19:59:43.838399677 +0000
+++ mpfr-3.1.4-b/PATCHES	2016-05-22 19:59:43.866399168 +0000
@@ -0,0 +1 @@
+add-sub-ui-flags
diff -Naurd mpfr-3.1.4-a/VERSION mpfr-3.1.4-b/VERSION
--- mpfr-3.1.4-a/VERSION	2016-04-13 21:22:23.744603677 +0000
+++ mpfr-3.1.4-b/VERSION	2016-05-22 19:59:43.866399168 +0000
@@ -1 +1 @@
-3.1.4-p1
+3.1.4-p2
diff -Naurd mpfr-3.1.4-a/src/add_ui.c mpfr-3.1.4-b/src/add_ui.c
--- mpfr-3.1.4-a/src/add_ui.c	2016-03-06 11:33:04.000000000 +0000
+++ mpfr-3.1.4-b/src/add_ui.c	2016-05-22 19:59:43.854399385 +0000
@@ -49,6 +49,7 @@
       MPFR_SAVE_EXPO_MARK (expo);
       MPFR_SET_EXP (uu, GMP_NUMB_BITS - cnt);
       inex = mpfr_add(y, x, uu, rnd_mode);
+      MPFR_SAVE_EXPO_UPDATE_FLAGS (expo, __gmpfr_flags);
       MPFR_SAVE_EXPO_FREE (expo);
       return mpfr_check_range(y, inex, rnd_mode);
     }
diff -Naurd mpfr-3.1.4-a/src/mpfr.h mpfr-3.1.4-b/src/mpfr.h
--- mpfr-3.1.4-a/src/mpfr.h	2016-04-13 21:22:23.744603677 +0000
+++ mpfr-3.1.4-b/src/mpfr.h	2016-05-22 19:59:43.862399241 +0000
@@ -27,7 +27,7 @@
 #define MPFR_VERSION_MAJOR 3
 #define MPFR_VERSION_MINOR 1
 #define MPFR_VERSION_PATCHLEVEL 4
-#define MPFR_VERSION_STRING "3.1.4-p1"
+#define MPFR_VERSION_STRING "3.1.4-p2"
 
 /* Macros dealing with MPFR VERSION */
 #define MPFR_VERSION_NUM(a,b,c) (((a) << 16L) | ((b) << 8) | (c))
diff -Naurd mpfr-3.1.4-a/src/sub_ui.c mpfr-3.1.4-b/src/sub_ui.c
--- mpfr-3.1.4-a/src/sub_ui.c	2016-03-06 11:33:05.000000000 +0000
+++ mpfr-3.1.4-b/src/sub_ui.c	2016-05-22 19:59:43.854399385 +0000
@@ -52,6 +52,7 @@
       MPFR_SAVE_EXPO_MARK (expo);
       MPFR_SET_EXP (uu, GMP_NUMB_BITS - cnt);
       inex = mpfr_sub (y, x, uu, rnd_mode);
+      MPFR_SAVE_EXPO_UPDATE_FLAGS (expo, __gmpfr_flags);
       MPFR_SAVE_EXPO_FREE (expo);
       return mpfr_check_range (y, inex, rnd_mode);
     }
diff -Naurd mpfr-3.1.4-a/src/version.c mpfr-3.1.4-b/src/version.c
--- mpfr-3.1.4-a/src/version.c	2016-04-13 21:22:23.744603677 +0000
+++ mpfr-3.1.4-b/src/version.c	2016-05-22 19:59:43.866399168 +0000
@@ -25,5 +25,5 @@
 const char *
 mpfr_get_version (void)
 {
-  return "3.1.4-p1";
+  return "3.1.4-p2";
 }
diff -Naurd mpfr-3.1.4-a/tests/tadd_ui.c mpfr-3.1.4-b/tests/tadd_ui.c
--- mpfr-3.1.4-a/tests/tadd_ui.c	2016-03-06 11:33:03.000000000 +0000
+++ mpfr-3.1.4-b/tests/tadd_ui.c	2016-05-22 19:59:43.854399385 +0000
@@ -69,7 +69,9 @@
 
   /* nan + 2394875 == nan */
   mpfr_set_nan (x);
+  mpfr_clear_nanflag ();
   mpfr_add_ui (y, x, 2394875L, MPFR_RNDN);
+  MPFR_ASSERTN (mpfr_nanflag_p ());
   MPFR_ASSERTN (mpfr_nan_p (y));
 
   /* +inf + 2394875 == +inf */
diff -Naurd mpfr-3.1.4-a/tests/tsub_ui.c mpfr-3.1.4-b/tests/tsub_ui.c
--- mpfr-3.1.4-a/tests/tsub_ui.c	2016-03-06 11:33:03.000000000 +0000
+++ mpfr-3.1.4-b/tests/tsub_ui.c	2016-05-22 19:59:43.854399385 +0000
@@ -96,7 +96,9 @@
 
   /* nan - 1 == nan */
   mpfr_set_nan (x);
+  mpfr_clear_nanflag ();
   mpfr_sub_ui (y, x, 1L, MPFR_RNDN);
+  MPFR_ASSERTN (mpfr_nanflag_p ());
   MPFR_ASSERTN (mpfr_nan_p (y));
 
   /* +inf - 1 == +inf */
