diff --git a/BeSafePlus/ViewModels/ActivityHistoryViewModel.cs b/BeSafePlus/ViewModels/ActivityHistoryViewModel.cs
index 1da8524ebe3eb93ab1dcbba938cb3d06e99abeb9..ad4e78dc56d25804d13a57d15df2962922187d41 100644
--- a/BeSafePlus/ViewModels/ActivityHistoryViewModel.cs
+++ b/BeSafePlus/ViewModels/ActivityHistoryViewModel.cs
@@ -74,9 +74,9 @@ namespace BeSafePlus.ViewModels
                 }
             }
         }
-        private void UpdateSteps(int steps)
+        private async void UpdateSteps(int steps)
         {
-            MainThread.BeginInvokeOnMainThread(() =>
+            await MainThread.InvokeOnMainThreadAsync(async () =>
             {
                 AccumulatedSteps = steps;
 
@@ -101,21 +101,35 @@ namespace BeSafePlus.ViewModels
 
                 TotalStepsThisWeek = WeeklyStepData.Sum(data => data.Steps);
 
-                Task.Run(async () =>
+                var todayMonthlyEntry = MonthlyStepData.FirstOrDefault(data => DateTime.Parse(data.Date).Date == today);
+
+                if (todayMonthlyEntry == null)
                 {
-                    await LoadMonthlySteps();
+                    todayMonthlyEntry = new StepCount { Date = today.ToString("yyyy-MM-dd"), Steps = steps };
+
+                    MonthlyStepData.Add(todayMonthlyEntry);
+                }
 
-                    MainThread.BeginInvokeOnMainThread(() =>
-                    {
-                        OnPropertyChanged(nameof(TotalStepsThisMonth));
-                    });
-                });
+                else
+                {
+                    todayMonthlyEntry.Steps = steps;
+                }
+
+                var firstDayOfMonth = new DateTime(today.Year, today.Month, 1);
+
+                var lastDayOfMonth = firstDayOfMonth.AddMonths(1).AddDays(-1);
+
+                TotalStepsThisMonth = MonthlyStepData
+                    .Where(data => DateTime.Parse(data.Date) >= firstDayOfMonth && DateTime.Parse(data.Date) <= lastDayOfMonth)
+                    .Sum(data => data.Steps);
 
                 OnPropertyChanged(nameof(WeeklyStepData));
 
                 OnPropertyChanged(nameof(TotalStepsThisWeek));
 
                 OnPropertyChanged(nameof(AccumulatedSteps));
+
+                OnPropertyChanged(nameof(TotalStepsThisMonth));
             });
         }
         public void SetProgress(int steps)
@@ -146,7 +160,13 @@ namespace BeSafePlus.ViewModels
         public int TotalStepsThisMonth
         {
             get => _totalStepsThisMonth;
-            set => SetProperty(ref _totalStepsThisMonth, value);
+            set
+            {
+                if (SetProperty(ref _totalStepsThisMonth, value))
+                {
+                    OnPropertyChanged(nameof(TotalStepsThisMonth));
+                }
+            }
         }
         public string WeekLabel => GetWeekLabel();
         public string MonthLabel => GetMonthLabel();
@@ -221,16 +241,27 @@ namespace BeSafePlus.ViewModels
 
             int totalSteps = 0;
 
+            var newMonthlyData = new List<StepCount>();
+
             for (var date = firstDayOfMonth; date <= lastDayOfMonth; date = date.AddDays(1))
             {
                 var stepData = await _database.GetStepCountByDate(date);
 
                 if (stepData != null)
                 {
+                    newMonthlyData.Add(stepData);
+
                     totalSteps += stepData.Steps;
                 }
+
+                else
+                {
+                    newMonthlyData.Add(new StepCount { Date = date.ToString("yyyy-MM-dd"), Steps = 0 });
+                }
             }
 
+            MonthlyStepData = newMonthlyData;
+
             TotalStepsThisMonth = totalSteps;
         }
         private string GetWeekLabel()
diff --git a/BeSafePlus/Views/ActivityHistoryPage.xaml.cs b/BeSafePlus/Views/ActivityHistoryPage.xaml.cs
index e9cd98cae4b0d6fccacbee9dacde99c2ce12f916..4582489efc299184203be3325c07ebcb23083d64 100644
--- a/BeSafePlus/Views/ActivityHistoryPage.xaml.cs
+++ b/BeSafePlus/Views/ActivityHistoryPage.xaml.cs
@@ -40,13 +40,20 @@ namespace BeSafePlus
         {
             base.OnAppearing();
 
-            await _viewModel.LoadStepGoal();
+            var loadStepGoalTask = _viewModel.LoadStepGoal();
 
-            await _viewModel.LoadWeeklySteps();
+            var loadWeeklyStepsTask = _viewModel.LoadWeeklySteps();
 
-            await _viewModel.LoadMonthlySteps();
+            var loadMonthlyStepsTask = _viewModel.LoadMonthlySteps();
 
-            _viewModel.AccumulatedSteps = await _viewModel.GetStepCount();
+            var getStepCountTask = _viewModel.GetStepCount();
+
+            await Task.WhenAll(loadStepGoalTask, loadWeeklyStepsTask, loadMonthlyStepsTask, getStepCountTask);
+
+            if (_viewModel.AccumulatedSteps == 0)
+            {
+                _viewModel.AccumulatedSteps = await getStepCountTask;
+            }
 
             LoadChart();