diff --git a/cmd/state/commands/history2.go b/cmd/state/commands/history2.go
index 7ded3435d73b704bf66850d7f4cbf0fcb3cc8018..1a4fd8516fcdfd65107ad15fe0087692b1c57966 100644
--- a/cmd/state/commands/history2.go
+++ b/cmd/state/commands/history2.go
@@ -27,6 +27,7 @@ import (
 )
 
 var (
+	blockTo    int
 	traceBlock int
 )
 
@@ -34,6 +35,7 @@ func init() {
 	withBlock(history2Cmd)
 	withDatadir(history2Cmd)
 	history2Cmd.Flags().IntVar(&traceBlock, "traceblock", 0, "block number at which to turn on tracing")
+	history2Cmd.Flags().IntVar(&blockTo, "blockto", 0, "block number to stop replay of history at")
 	rootCmd.AddCommand(history2Cmd)
 }
 
@@ -67,7 +69,7 @@ func History2(genesis *core.Genesis, logger log.Logger) error {
 	}
 	defer historyTx.Rollback()
 	aggPath := filepath.Join(datadir, "aggregator")
-	h, err3 := aggregator.NewHistory(aggPath, block, aggregationStep)
+	h, err3 := aggregator.NewHistory(aggPath, uint64(blockTo), aggregationStep)
 	if err3 != nil {
 		return fmt.Errorf("create history: %w", err3)
 	}
@@ -95,6 +97,9 @@ func History2(genesis *core.Genesis, logger log.Logger) error {
 			log.Info("Progress", "block", blockNum, "blk/s", speed)
 		}
 		blockNum++
+		if blockNum > uint64(blockTo) {
+			break
+		}
 		blockHash, err := rawdb.ReadCanonicalHash(historyTx, blockNum)
 		if err != nil {
 			return err
@@ -107,6 +112,11 @@ func History2(genesis *core.Genesis, logger log.Logger) error {
 		if b == nil {
 			break
 		}
+		if blockNum < block {
+			// Skip that block, but increase txNum
+			txNum += uint64(len(b.Transactions())) + 1
+			continue
+		}
 		r := h.MakeHistoryReader()
 		readWrapper := &HistoryWrapper{r: r}
 		if traceBlock != 0 {
@@ -205,7 +215,7 @@ func (hw *HistoryWrapper) ReadAccountData(address common.Address) (*accounts.Acc
 func (hw *HistoryWrapper) ReadAccountStorage(address common.Address, incarnation uint64, key *common.Hash) ([]byte, error) {
 	enc, err := hw.r.ReadAccountStorage(address.Bytes(), key.Bytes(), hw.trace)
 	if hw.trace {
-		fmt.Printf("ReadAccountStorage [%x] [%x] => [%x]\n", address, key.Bytes(), enc)
+		fmt.Printf("ReadAccountStorage [%x] [%x] => [%x]\n", address, key.Bytes(), enc.Bytes())
 	}
 	if err != nil {
 		fmt.Printf("%v\n", err)
diff --git a/ethdb/bitmapdb/dbutils.go b/ethdb/bitmapdb/dbutils.go
index 7ecdd846887781bcf96fe0d635f205b617df5bc1..b8810d8ebef86420a11f97ae1c3d48dd3f5fd24b 100644
--- a/ethdb/bitmapdb/dbutils.go
+++ b/ethdb/bitmapdb/dbutils.go
@@ -311,9 +311,16 @@ func Get64(db kv.Tx, bucket string, key []byte, from, to uint64) (*roaring64.Bit
 
 // SeekInBitmap - returns value in bitmap which is >= n
 func SeekInBitmap64(m *roaring64.Bitmap, n uint64) (found uint64, ok bool) {
-	m.RemoveRange(0, n)
 	if m.IsEmpty() {
 		return 0, false
 	}
-	return m.Minimum(), true
+	if n == 0 {
+		return m.Minimum(), true
+	}
+	searchRank := m.Rank(n - 1)
+	if searchRank >= m.GetCardinality() {
+		return 0, false
+	}
+	found, _ = m.Select(searchRank)
+	return found, true
 }
diff --git a/go.mod b/go.mod
index 8df7a5b478b7ec4113d0bb11b3df9bc4e02304a2..e64528b18ad8a6b413c7d3d0d0ac8b44701829cc 100644
--- a/go.mod
+++ b/go.mod
@@ -40,7 +40,7 @@ require (
 	github.com/json-iterator/go v1.1.12
 	github.com/julienschmidt/httprouter v1.3.0
 	github.com/kevinburke/go-bindata v3.21.0+incompatible
-	github.com/ledgerwatch/erigon-lib v0.0.0-20220213022242-61c78273b7d0
+	github.com/ledgerwatch/erigon-lib v0.0.0-20220213185636-136385995894
 	github.com/ledgerwatch/log/v3 v3.4.0
 	github.com/ledgerwatch/secp256k1 v1.0.0
 	github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e // indirect
diff --git a/go.sum b/go.sum
index 525c342aa35c9b382e2bbf3d7bf848a1270365b9..e5ba9019cf4c6584eef23b31a2ada6d385f63cba 100644
--- a/go.sum
+++ b/go.sum
@@ -632,8 +632,8 @@ github.com/kylelemons/godebug v0.0.0-20170224010052-a616ab194758 h1:0D5M2HQSGD3P
 github.com/kylelemons/godebug v0.0.0-20170224010052-a616ab194758/go.mod h1:B69LEHPfb2qLo0BaaOLcbitczOKLWTsrBG9LczfCD4k=
 github.com/leanovate/gopter v0.2.9 h1:fQjYxZaynp97ozCzfOyOuAGOU4aU/z37zf/tOujFk7c=
 github.com/leanovate/gopter v0.2.9/go.mod h1:U2L/78B+KVFIx2VmW6onHJQzXtFb+p5y3y2Sh+Jxxv8=
-github.com/ledgerwatch/erigon-lib v0.0.0-20220213022242-61c78273b7d0 h1:oYSSMbr3qAU+b5R3yJiD47gVJ+Gl23oO46aRGVg7w8M=
-github.com/ledgerwatch/erigon-lib v0.0.0-20220213022242-61c78273b7d0/go.mod h1:phuzMr8tLvqjo5cQVA9jj8odAso6eLyS4LFmUJrDFGw=
+github.com/ledgerwatch/erigon-lib v0.0.0-20220213185636-136385995894 h1:YLRLN/rmjQ3fLMtgna1iVqAQbZVIz+G07G3jXHc+lpU=
+github.com/ledgerwatch/erigon-lib v0.0.0-20220213185636-136385995894/go.mod h1:phuzMr8tLvqjo5cQVA9jj8odAso6eLyS4LFmUJrDFGw=
 github.com/ledgerwatch/log/v3 v3.4.0 h1:SEIOcv5a2zkG3PmoT5jeTU9m/0nEUv0BJS5bzsjwKCI=
 github.com/ledgerwatch/log/v3 v3.4.0/go.mod h1:VXcz6Ssn6XEeU92dCMc39/g1F0OYAjw1Mt+dGP5DjXY=
 github.com/ledgerwatch/secp256k1 v1.0.0 h1:Usvz87YoTG0uePIV8woOof5cQnLXGYa162rFf3YnwaQ=