diff --git a/packages/loot-core/src/server/budget/goaltemplates.ts b/packages/loot-core/src/server/budget/goaltemplates.ts
index 6ac4fd586c5c6e615fbbfa3de9e22470841ee6ce..992acae7a991871d6aff3e208213f49e87b969f1 100644
--- a/packages/loot-core/src/server/budget/goaltemplates.ts
+++ b/packages/loot-core/src/server/budget/goaltemplates.ts
@@ -398,8 +398,8 @@ async function applyCategoryTemplate(
               if (budgetAvailable > 0) to_budget += budgetAvailable;
               errors.push(`Insufficient funds.`);
             }
-            w = addWeeks(w, weeks);
           }
+          w = addWeeks(w, weeks);
         }
         break;
       }
diff --git a/upcoming-release-notes/1019.md b/upcoming-release-notes/1019.md
new file mode 100644
index 0000000000000000000000000000000000000000..4f47f03518f02ce10b2c913de540cf8b057015c5
--- /dev/null
+++ b/upcoming-release-notes/1019.md
@@ -0,0 +1,6 @@
+---
+category: Bugfix
+authors: [youngcw]
+---
+
+Fix infinite loop condition in repeat goal