From 5dd59c0053a6e9123efea525e3a103f7e68436df Mon Sep 17 00:00:00 2001
From: youngcw <calebyoung94@gmail.com>
Date: Thu, 27 Jul 2023 18:35:00 -0700
Subject: [PATCH] Goals: fix leftover 1 cent in remainder goal (#1400)

---
 packages/loot-core/src/server/budget/goaltemplates.ts | 5 ++++-
 upcoming-release-notes/1400.md                        | 6 ++++++
 2 files changed, 10 insertions(+), 1 deletion(-)
 create mode 100644 upcoming-release-notes/1400.md

diff --git a/packages/loot-core/src/server/budget/goaltemplates.ts b/packages/loot-core/src/server/budget/goaltemplates.ts
index 7c3c033bf..bf394c4c5 100644
--- a/packages/loot-core/src/server/budget/goaltemplates.ts
+++ b/packages/loot-core/src/server/budget/goaltemplates.ts
@@ -144,7 +144,7 @@ async function processTemplate(month, force, category_templates) {
     let remainder_scale = 1;
     if (priority === lowestPriority) {
       let available_now = await getSheetValue(sheetName, `to-budget`);
-      remainder_scale = Math.round(available_now / remainder_weight_total);
+      remainder_scale = available_now / remainder_weight_total;
     }
 
     for (let c = 0; c < categories.length; c++) {
@@ -671,6 +671,9 @@ async function applyCategoryTemplate(
           // can over budget with the rounding, so checking that
           if (to_budget >= budgetAvailable + budgeted) {
             to_budget = budgetAvailable + budgeted;
+            // check if there is 1 cent leftover from rounding
+          } else if (budgetAvailable - to_budget === 1) {
+            to_budget = to_budget + 1;
           }
         }
         break;
diff --git a/upcoming-release-notes/1400.md b/upcoming-release-notes/1400.md
new file mode 100644
index 000000000..3bd39278f
--- /dev/null
+++ b/upcoming-release-notes/1400.md
@@ -0,0 +1,6 @@
+---
+category: Bugfix
+authors: [youngcw]
+---
+
+Goals: Fix leftover $0.01 when using remainder goal
-- 
GitLab