diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog
index d0aabea7681536cc9300ebc5fd24daf1832529a5..e932ed1bf55d402c254cbfee73cf580b2e0113b7 100644
--- a/libgfortran/ChangeLog
+++ b/libgfortran/ChangeLog
@@ -1,3 +1,9 @@
+2005-02-01  Paul Thomas <paulthomas2@wanadoo.fr>
+
+	PR libgfortran/19363
+	PR libgfortran/19691
+	* libgfortran.h (isfinite): Work around broken isfinite(x) in Cygwin.
+
 2005-01-30  Bud Davis  <bdavis@gfortran.org>
 
 	PR fortran/19647
diff --git a/libgfortran/libgfortran.h b/libgfortran/libgfortran.h
index dfa2e409f4b69b338aea3be95cc3036898f2e8f5..7dd6993809f056e219cb00fcfd65ac63f6408bdb 100644
--- a/libgfortran/libgfortran.h
+++ b/libgfortran/libgfortran.h
@@ -171,9 +171,14 @@ typedef off_t gfc_offset;
 
 /* The isfinite macro is only available with C99, but some non-C99
    systems still provide fpclassify, and there is a `finite' function
-   in BSD.  When isfinite is not available, try to use one of the
+   in BSD.
+
+   Also, isfinite is broken on Cygwin.
+
+   When isfinite is not available, try to use one of the
    alternatives, or bail out.  */
-#if !defined(isfinite)
+#if (!defined(isfinite) || defined(__CYGWIN__))
+#undef isfinite
 static inline int
 isfinite (double x)
 {