diff --git a/CHANGELOG.md b/CHANGELOG.md
index 29d25ca5dedca244e34e78abeee7dd8cc9cf599a..7a69412aba37238cbccb5750854c6ee97a0a0a5f 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1 +1,3 @@
 # v2.14.48
+
+* **bugfix** fixed `CPUProfileBuilderThread`
diff --git a/satella/__init__.py b/satella/__init__.py
index 75c554a4505410cab0f777c243704dc67b365d39..c1afbd70cfb9b17abdc46a6b2298200648a43cfb 100644
--- a/satella/__init__.py
+++ b/satella/__init__.py
@@ -1 +1 @@
-__version__ = '2.14.48a1'
+__version__ = '2.14.48'
diff --git a/satella/instrumentation/cpu_time/collector.py b/satella/instrumentation/cpu_time/collector.py
index 39f5ec805e026069b9f224d54892e081689ad620..beefea3f224376bac768a3c26975f7a5983cd69a 100644
--- a/satella/instrumentation/cpu_time/collector.py
+++ b/satella/instrumentation/cpu_time/collector.py
@@ -29,7 +29,7 @@ class CPUProfileBuilderThread(threading.Thread):
                  refresh_each: tp.Union[str, int] = DEFAULT_REFRESH_EACH,
                  percentiles_requested: tp.Sequence[float] = (0.9, )):
         super().__init__(name='CPU profile builder', daemon=True)
-        self.window_size = parse_time_string(window_seconds)
+        self.window_size = int(parse_time_string(window_seconds))
         self.refresh_each = parse_time_string(refresh_each)
         self.data = []
         self.percentiles_requested = list(percentiles_requested)