diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -1,5 +1,7 @@
 # mixed-types-num change log
 
+* v 0.4.1 2019-04-11
+  * fix infinite loop in some conversions
 * v 0.4.0 2019-04-10
   * eliminated dependency on convertible, improving ghcjs compatibility
 * v 0.3.2 2019-01-08
diff --git a/mixed-types-num.cabal b/mixed-types-num.cabal
--- a/mixed-types-num.cabal
+++ b/mixed-types-num.cabal
@@ -1,5 +1,5 @@
 name:           mixed-types-num
-version:        0.4.0
+version:        0.4.0.1
 cabal-version:  >= 1.9.2
 build-type:     Simple
 homepage:       https://github.com/michalkonecny/mixed-types-num
diff --git a/src/Data/Convertible/Utils.hs b/src/Data/Convertible/Utils.hs
--- a/src/Data/Convertible/Utils.hs
+++ b/src/Data/Convertible/Utils.hs
@@ -56,7 +56,9 @@
           else return result :: ConvertResult b
 
 ifThenElse :: Bool -> t -> t -> t
-ifThenElse b c d = if b then c else d
+ifThenElse b c d 
+   | b = c
+   | otherwise = d
 
 {- | Useful for defining conversions that are implemented in terms of other
 conversions via an intermediary type. Instead of:
diff --git a/src/Numeric/MixedTypes/Eq.hs b/src/Numeric/MixedTypes/Eq.hs
--- a/src/Numeric/MixedTypes/Eq.hs
+++ b/src/Numeric/MixedTypes/Eq.hs
@@ -316,6 +316,9 @@
   isNaN = const False
 instance CanTestNaN Rational where
   isNaN = const False
+instance CanTestFinite Int where
+  isInfinite = const False
+  isFinite = const True
 instance CanTestFinite Integer where
   isInfinite = const False
   isFinite = const True
