diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,6 +4,9 @@
 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.20.1
+### Fixed
+- Correct case where binary search returned the wrong element.
 
 ## 0.20.0
 ### Chaged
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: f90b7b9353df059b5744c2454f8f514133d3e989a66c8137a87030db88a73a2a
+-- hash: 453f8e3571726d6b8f4955298154df7bc915f395fe414b2b3c859021583dfbfe
 
 name:           haskoin-core
-version:        0.20.0
+version:        0.20.1
 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
@@ -633,8 +633,8 @@
     no_middle a b = nodeHeight b - nodeHeight a <= 1
     is_between a' b' = a' /= GT && b' /= LT
     choose_one a b
-        | top = return b
-        | otherwise = return a
+        | top = return a
+        | otherwise = return b
 
 extremes :: BlockHeaders m => Network -> m (BlockNode, BlockNode)
 extremes net = do
