diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,6 +4,10 @@
 The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
 and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
 
+## 0.17.4
+### Fixed
+- Bounds check too restrictive in block header binary search function.
+
 ## 0.17.3
 ### Changed
 - Reduce minimum version of text package dependency.
diff --git a/haskoin-core.cabal b/haskoin-core.cabal
--- a/haskoin-core.cabal
+++ b/haskoin-core.cabal
@@ -4,10 +4,10 @@
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: c44a29e192f403c6cdbdf31c04928ef363a29f54ea580363b250f3fbcc503ba1
+-- hash: 168be8c79df03def3902c328ae1c29a5d4e2f77ba15072450acc9c17b2823eb5
 
 name:           haskoin-core
-version:        0.17.3
+version:        0.17.4
 synopsis:       Bitcoin & Bitcoin Cash library for Haskell
 description:    Please see the README on GitHub at <https://github.com/haskoin/haskoin-core#readme>
 category:       Bitcoin, Finance, Network
diff --git a/src/Haskoin/Block/Headers.hs b/src/Haskoin/Block/Headers.hs
--- a/src/Haskoin/Block/Headers.hs
+++ b/src/Haskoin/Block/Headers.hs
@@ -609,7 +609,9 @@
         | is_between a' m' = go a m
         | is_between m' b' = go m b
         | otherwise = mzero
-    out_of_bounds a' b' = a' == GT || b' == LT
+    out_of_bounds a' b'
+        | top = a' == GT
+        | otherwise = b' == LT
     no_middle a b = nodeHeight b - nodeHeight a <= 1
     is_between a' b' = a' /= GT && b' /= LT
     choose_one a b
