diff -Naurd mpfr-2.4.1-a/PATCHES mpfr-2.4.1-b/PATCHES
--- mpfr-2.4.1-a/PATCHES	2009-02-20 09:43:17.000000000 +0000
+++ mpfr-2.4.1-b/PATCHES	2009-02-27 16:56:29.000000000 +0000
@@ -0,0 +1 @@
+remainder-neg
diff -Naurd mpfr-2.4.1-a/VERSION mpfr-2.4.1-b/VERSION
--- mpfr-2.4.1-a/VERSION	2009-02-25 16:16:08.000000000 +0000
+++ mpfr-2.4.1-b/VERSION	2009-02-27 16:55:37.000000000 +0000
@@ -1 +1 @@
-2.4.1
+2.4.1-p1
diff -Naurd mpfr-2.4.1-a/mpfr.h mpfr-2.4.1-b/mpfr.h
--- mpfr-2.4.1-a/mpfr.h	2009-02-25 16:16:08.000000000 +0000
+++ mpfr-2.4.1-b/mpfr.h	2009-02-27 16:55:38.000000000 +0000
@@ -27,7 +27,7 @@
 #define MPFR_VERSION_MAJOR 2
 #define MPFR_VERSION_MINOR 4
 #define MPFR_VERSION_PATCHLEVEL 1
-#define MPFR_VERSION_STRING "2.4.1"
+#define MPFR_VERSION_STRING "2.4.1-p1"
 
 /* Macros dealing with MPFR VERSION */
 #define MPFR_VERSION_NUM(a,b,c) (((a) << 16L) | ((b) << 8) | (c))
diff -Naurd mpfr-2.4.1-a/rem1.c mpfr-2.4.1-b/rem1.c
--- mpfr-2.4.1-a/rem1.c	2009-02-20 09:43:17.000000000 +0000
+++ mpfr-2.4.1-b/rem1.c	2009-02-27 16:55:15.000000000 +0000
@@ -170,7 +170,12 @@
     }
 
   if (mpz_cmp_ui (r, 0) == 0)
-    inex = mpfr_set_ui (rem, 0, GMP_RNDN);
+    {
+      inex = mpfr_set_ui (rem, 0, GMP_RNDN);
+      /* take into account sign of x */
+      if (signx < 0)
+        mpfr_neg (rem, rem, GMP_RNDN);
+    }
   else
     {
       if (rnd_q == GMP_RNDN)
@@ -190,6 +195,9 @@
                 *quo += 1;
             }
         }
+      /* take into account sign of x */
+      if (signx < 0)
+        mpz_neg (r, r);
       inex = mpfr_set_z (rem, r, rnd);
       /* if ex > ey, rem should be multiplied by 2^ey, else by 2^ex */
       MPFR_EXP (rem) += (ex > ey) ? ey : ex;
@@ -198,13 +206,6 @@
   if (quo)
     *quo *= sign;
 
-  /* take into account sign of x */
-  if (signx < 0)
-    {
-      mpfr_neg (rem, rem, GMP_RNDN);
-      inex = -inex;
-    }
-
   mpz_clear (mx);
   mpz_clear (my);
   mpz_clear (r);
diff -Naurd mpfr-2.4.1-a/tests/tremquo.c mpfr-2.4.1-b/tests/tremquo.c
--- mpfr-2.4.1-a/tests/tremquo.c	2009-02-20 09:43:15.000000000 +0000
+++ mpfr-2.4.1-b/tests/tremquo.c	2009-02-27 16:55:15.000000000 +0000
@@ -25,6 +25,36 @@
 
 #include "mpfr-test.h"
 
+static void
+bug20090227 (void)
+{
+  mpfr_t x, y, r1, r2;
+  int inex1, inex2;
+
+  mpfr_init2 (x, 118);
+  mpfr_init2 (y, 181);
+  mpfr_init2 (r1, 140);
+  mpfr_init2 (r2, 140);
+  mpfr_set_si (x, -1, GMP_RNDN);
+  mpfr_set_str_binary (y, "1.100100100001111110110101010001000100001011010001100001000110100110001001100011001100010100010111000000011011100000111001101000100101001000000100100111000001000100010100110011111010");
+  inex1 = mpfr_remainder (r1, x, y, GMP_RNDU);
+  /* since the quotient is -1, r1 is the rounding of x+y */
+  inex2 = mpfr_add (r2, x, y, GMP_RNDU);
+  if (mpfr_cmp (r1, r2))
+    {
+      printf ("Error in mpfr_remainder (bug20090227)\n");
+      printf ("Expected ");
+      mpfr_dump (r2);
+      printf ("Got      ");
+      mpfr_dump (r1);
+      exit (1);
+    }
+  mpfr_clear (x);
+  mpfr_clear (y);
+  mpfr_clear (r1);
+  mpfr_clear (r2);
+}
+
 int
 main (int argc, char *argv[])
 {
@@ -50,6 +80,8 @@
 
   tests_start_mpfr ();
 
+  bug20090227 ();
+
   mpfr_init (x);
   mpfr_init (y);
   mpfr_init (r);
diff -Naurd mpfr-2.4.1-a/version.c mpfr-2.4.1-b/version.c
--- mpfr-2.4.1-a/version.c	2009-02-25 16:16:08.000000000 +0000
+++ mpfr-2.4.1-b/version.c	2009-02-27 16:55:38.000000000 +0000
@@ -25,5 +25,5 @@
 const char *
 mpfr_get_version (void)
 {
-  return "2.4.1";
+  return "2.4.1-p1";
 }
