diff --git a/lib/storage/block.go b/lib/storage/block.go
index 6513c4c449..1a3d1f06d8 100644
--- a/lib/storage/block.go
+++ b/lib/storage/block.go
@@ -95,6 +95,9 @@ func (b *Block) Init(tsid *TSID, timestamps, values []int64, scale int16, precis
 	b.bh.PrecisionBits = precisionBits
 	b.timestamps = append(b.timestamps[:0], timestamps...)
 	b.values = append(b.values[:0], values...)
+	if len(b.timestamps) > 0 {
+		b.fixupTimestamps()
+	}
 }
 
 // nextRow advances to the next row.
diff --git a/lib/storage/raw_row.go b/lib/storage/raw_row.go
index 549774b196..0f267da035 100644
--- a/lib/storage/raw_row.go
+++ b/lib/storage/raw_row.go
@@ -118,7 +118,6 @@ func (rrm *rawRowsMarshaler) marshalToInmemoryPart(mp *inmemoryPart, rows []rawR
 
 		rrm.auxValues, scale = decimal.AppendFloatToDecimal(rrm.auxValues[:0], rrm.auxFloatValues)
 		tmpBlock.Init(tsid, rrm.auxTimestamps, rrm.auxValues, scale, precisionBits)
-		tmpBlock.fixupTimestamps()
 		rrm.bsw.WriteExternalBlock(tmpBlock, ph, &rowsMerged)
 
 		tsid = &r.TSID
@@ -129,7 +128,6 @@ func (rrm *rawRowsMarshaler) marshalToInmemoryPart(mp *inmemoryPart, rows []rawR
 
 	rrm.auxValues, scale = decimal.AppendFloatToDecimal(rrm.auxValues[:0], rrm.auxFloatValues)
 	tmpBlock.Init(tsid, rrm.auxTimestamps, rrm.auxValues, scale, precisionBits)
-	tmpBlock.fixupTimestamps()
 	rrm.bsw.WriteExternalBlock(tmpBlock, ph, &rowsMerged)
 	if rowsMerged != uint64(len(rows)) {
 		logger.Panicf("BUG: unexpected rowsMerged; got %d; want %d", rowsMerged, len(rows))