diff --git a/src/libs/zbxcachehistory/cachehistory.c b/src/libs/zbxcachehistory/cachehistory.c
index b499d0d72c0..db20043c490 100644
--- a/src/libs/zbxcachehistory/cachehistory.c
+++ b/src/libs/zbxcachehistory/cachehistory.c
@@ -523,22 +523,19 @@ static void	dc_remove_updated_trends(ZBX_DC_TREND *trends, int trends_num, const
  * Purpose: helper function for DCflush trends                                *
  *                                                                            *
  ******************************************************************************/
-static void	dc_trends_update_float(ZBX_DC_TREND *trend, zbx_db_row_t row, int num)
+static void	dc_trends_update_float(ZBX_DC_TREND *trend, const zbx_db_row_t row, int num)
 {
-	zbx_history_value_t	value_min, value_avg, value_max;
-	double			max_val, scaled_avg, scaled_avg2;
-
-	value_min.dbl = atof(row[2]);
-	value_avg.dbl = atof(row[3]);
-	value_max.dbl = atof(row[4]);
+	double	value_min = atof(row[2]);
+	double	value_avg = atof(row[3]);
+	double	value_max = atof(row[4]);
 
-	if (value_min.dbl < trend->value_min.dbl)
-		trend->value_min.dbl = value_min.dbl;
+	if (value_min < trend->value_min.dbl)
+		trend->value_min.dbl = value_min;
 
-	if (value_max.dbl > trend->value_max.dbl)
-		trend->value_max.dbl = value_max.dbl;
+	if (value_max > trend->value_max.dbl)
+		trend->value_max.dbl = value_max;
 
-	max_val = fmax(fabs(trend->value_avg.dbl), fabs(value_avg.dbl));
+	double	max_val = fmax(fabs(trend->value_avg.dbl), fabs(value_avg));
 
 	if (0.0 == max_val)
 	{
@@ -546,8 +543,8 @@ static void	dc_trends_update_float(ZBX_DC_TREND *trend, zbx_db_row_t row, int nu
 	}
 	else
 	{
-		scaled_avg = trend->value_avg.dbl / max_val;
-		scaled_avg2 = value_avg.dbl / max_val;
+		double	scaled_avg = trend->value_avg.dbl / max_val;
+		double	scaled_avg2 = value_avg / max_val;
 
 		trend->value_avg.dbl = (scaled_avg * trend->num + scaled_avg2 * num) / (trend->num + num) * max_val;
 	}
