diff --git a/packages/loot-core/src/server/budget/goal-template.pegjs b/packages/loot-core/src/server/budget/goal-template.pegjs
index 26b7ac630c39f90e4953ffc8171f6e060967fe38..2efb87f5443c662a23f69767ebc0d476a9704627 100644
--- a/packages/loot-core/src/server/budget/goal-template.pegjs
+++ b/packages/loot-core/src/server/budget/goal-template.pegjs
@@ -1,11 +1,9 @@
-// https://peggyjs.org
-
 expr
-  = priority: priority? _? percent: percent _ of _ category: name
+  = priority: priority? percent: percent _ of _ category: name
     { return { type: 'percentage', percent: +percent, category, priority: +priority }}
-  / priority: priority? _? amount: amount _ repeatEvery _ weeks: weekCount _ starting _ starting: date limit: limit?
+  / priority: priority? amount: amount _ repeatEvery _ weeks: weekCount _ starting _ starting: date limit: limit?
     { return { type: 'week', amount, weeks, starting, limit, priority: +priority }}
-  / priority: priority? _? amount: amount _ by _ month: month from: spendFrom? repeat: (_ repeatEvery _ repeat)?
+  / priority: priority? amount: amount _ by _ month: month from: spendFrom? repeat: (_ repeatEvery _ repeat)?
     { return {
       type: from ? 'spend' : 'by',
       amount,
@@ -14,12 +12,13 @@ expr
       from,
       priority: +priority
     } }
-  / priority: priority? _? monthly: amount limit: limit?
-    { return { type: 'simple', monthly, limit, priority: +priority  } }
-  / priority: priority? _? limit: limit
+  / priority: priority? monthly: amount limit: limit?
+    { return { type: 'simple', monthly, limit, priority: +priority  } } 
+  / priority: priority? limit: limit
     { return { type: 'simple', limit , priority: +priority } }
-  / priority: priority? _? schedule _ name: name
-    { return { type: 'schedule', name, priority: +priority } }
+  / priority: priority? schedule _ full:full? name: name
+  	{ return { type: 'schedule', name, priority: +priority, full } }
+  
 
 repeat 'repeat interval'
   = 'month'i { return { annual: false } }
@@ -28,7 +27,7 @@ repeat 'repeat interval'
   / years: d _ 'years'i { return { annual: true, repeat: +years } }
 
 limit =  _? upTo _ amount: amount _ 'hold'i { return {amount: amount, hold: true } }
-		/ _? upTo _ amount: amount { return {amount: amount, hold: false } }
+        / _? upTo _ amount: amount { return {amount: amount, hold: false } }
 
 
 weekCount
@@ -45,6 +44,7 @@ repeatEvery = 'repeat'i _ 'every'i
 starting = 'starting'i
 upTo = 'up'i _ 'to'i
 schedule = 'schedule'i
+full = 'full'i _ {return true}
 priority = '-'i number: number _ {return number}
 
 _ 'space' = ' '+
@@ -59,3 +59,4 @@ date = $(month '-' day)
 currencySymbol 'currency symbol' = symbol: . & { return /\p{Sc}/u.test(symbol) }
 
 name 'Name' = $([^\r\n\t]+)
+
diff --git a/packages/loot-core/src/server/budget/goaltemplates.ts b/packages/loot-core/src/server/budget/goaltemplates.ts
index 992acae7a991871d6aff3e208213f49e87b969f1..9cad8ffb7c6b91a8a35e5131ffb1a6c090f8759e 100644
--- a/packages/loot-core/src/server/budget/goaltemplates.ts
+++ b/packages/loot-core/src/server/budget/goaltemplates.ts
@@ -489,9 +489,6 @@ async function applyCategoryTemplate(
         }
         break;
       }
-      case 'error':
-        return { errors };
-      default:
       case 'schedule': {
         let { id: schedule_id } = await db.first(
           'SELECT id FROM schedules WHERE name = ?',
@@ -506,6 +503,14 @@ async function applyCategoryTemplate(
           new Date(next_date_string),
           current_month,
         );
+
+        if (template.full === true) {
+          if (num_months === 1) {
+            to_budget = -getScheduledAmount(amountCond.value);
+          }
+          break;
+        }
+
         if (l === 0) remainder = last_month_balance;
         remainder = -getScheduledAmount(amountCond.value) - remainder;
         let target = 0;
@@ -537,6 +542,9 @@ async function applyCategoryTemplate(
         }
         break;
       }
+      case 'error':
+        return { errors };
+      default:
     }
   }
 
diff --git a/upcoming-release-notes/1052.md b/upcoming-release-notes/1052.md
new file mode 100644
index 0000000000000000000000000000000000000000..9568abde85d7e8a3365555d80f01dfe7645af2cd
--- /dev/null
+++ b/upcoming-release-notes/1052.md
@@ -0,0 +1,6 @@
+---
+category: Enhancements
+authors: [youngcw]
+---
+
+Templates: Add option to only apply schedule template to the month of the schedule instead of spreading out the charge.