diff --git a/erpnext/hr/doctype/leave_allocation/test_leave_allocation.js b/erpnext/hr/doctype/leave_allocation/test_leave_allocation.js
index b8f4faf..0ef78f2 100644
--- a/erpnext/hr/doctype/leave_allocation/test_leave_allocation.js
+++ b/erpnext/hr/doctype/leave_allocation/test_leave_allocation.js
@@ -34,7 +34,7 @@
 		() => assert.equal(today_date, cur_frm.doc.from_date,
 			"from date correctly set"),
 		// check for total leaves
-		() => assert.equal(cur_frm.doc.carry_forwarded_leaves + 2, cur_frm.doc.total_leaves_allocated,
+		() => assert.equal(cur_frm.doc.unused_leaves + 2, cur_frm.doc.total_leaves_allocated,
 			"total leave calculation is correctly set"),
 		() => done()
 	]);
diff --git a/erpnext/hr/doctype/leave_allocation/test_leave_allocation.py b/erpnext/hr/doctype/leave_allocation/test_leave_allocation.py
index 4f4e0ab..8f876ae 100644
--- a/erpnext/hr/doctype/leave_allocation/test_leave_allocation.py
+++ b/erpnext/hr/doctype/leave_allocation/test_leave_allocation.py
@@ -80,7 +80,7 @@
 			leave_type="_Test_CF_leave",
 			from_date=add_months(nowdate(), -12),
 			to_date=add_months(nowdate(), -1),
-			carry_forward=1)
+			carry_forward=0)
 		leave_allocation.submit()
 
 		# leave allocation with carry forward from previous allocation
@@ -89,7 +89,7 @@
 			carry_forward=1)
 		leave_allocation_1.submit()
 
-		self.assertEquals(leave_allocation.total_leaves_allocated, leave_allocation_1.carry_forwarded_leaves)
+		self.assertEquals(leave_allocation.total_leaves_allocated, leave_allocation_1.unused_leaves)
 
 	def test_carry_forward_leaves_expiry(self):
 		frappe.db.sql("delete from `tabLeave Allocation`")
@@ -105,11 +105,9 @@
 			leave_type="_Test_CF_leave_expiry",
 			from_date=add_months(nowdate(), -24),
 			to_date=add_months(nowdate(), -12),
-			carry_forward=1)
+			carry_forward=0)
 		leave_allocation.submit()
 
-		expire_allocation(leave_allocation)
-
 		leave_allocation = create_leave_allocation(
 			leave_type="_Test_CF_leave_expiry",
 			from_date=add_days(nowdate(), -90),
@@ -128,7 +126,7 @@
 			to_date=add_months(nowdate(), 12))
 		leave_allocation_1.submit()
 
-		self.assertEquals(leave_allocation_1.carry_forwarded_leaves, leave_allocation.new_leaves_allocated)
+		self.assertEquals(leave_allocation_1.unused_leaves, leave_allocation.new_leaves_allocated)
 
 	def test_creation_of_leave_ledger_entry_on_submit(self):
 		frappe.db.sql("delete from `tabLeave Allocation`")
diff --git a/erpnext/hr/doctype/leave_application/leave_application.py b/erpnext/hr/doctype/leave_application/leave_application.py
index 2e43721..0aa8849 100755
--- a/erpnext/hr/doctype/leave_application/leave_application.py
+++ b/erpnext/hr/doctype/leave_application/leave_application.py
@@ -387,10 +387,12 @@
 			create_leave_ledger_entry(self, args, submit)
 
 def get_allocation_expiry(employee, leave_type, to_date, from_date):
+	''' Returns expiry of carry forward allocation in leave ledger entry '''
 	expiry =  frappe.get_all("Leave Ledger Entry",
 		filters={
 			'employee': employee,
 			'leave_type': leave_type,
+			'is_carry_forward': 1,
 			'transaction_type': 'Leave Allocation',
 			'to_date': ['between', (from_date, to_date)]
 		},fields=['to_date'])
@@ -487,7 +489,7 @@
 			"from_date": d.from_date,
 			"to_date": d.to_date,
 			"total_leaves_allocated": flt(d.cf_leaves) + flt(d.new_leaves),
-			"carry_forwarded_leaves": d.cf_leaves,
+			"unused_leaves": d.cf_leaves,
 			"new_leaves_allocated": d.new_leaves,
 			"leave_type": d.leave_type
 		}))
@@ -515,12 +517,14 @@
 
 		return remaining_leaves
 
-	if expiry and allocation.carry_forwarded_leaves:
-		remaining_leaves = _get_remaining_leaves(allocation.carry_forwarded_leaves, expiry)
+	total_leaves = allocation.total_leaves_allocated
 
-		return flt(allocation.new_leaves_allocated) + flt(remaining_leaves)
-	else:
-		return _get_remaining_leaves(allocation.total_leaves_allocated, allocation.to_date)
+	if expiry and allocation.unused_leaves:
+		remaining_leaves = _get_remaining_leaves(allocation.unused_leaves, expiry)
+
+		total_leaves = flt(allocation.new_leaves_allocated) + flt(remaining_leaves)
+
+	return _get_remaining_leaves(total_leaves, allocation.to_date)
 
 def get_leaves_for_period(employee, leave_type, from_date, to_date):
 	leave_entries = get_leave_entries(employee, leave_type, from_date, to_date)
diff --git a/erpnext/hr/doctype/leave_application/test_leave_application.py b/erpnext/hr/doctype/leave_application/test_leave_application.py
index 709a2f5..0f7bf86 100644
--- a/erpnext/hr/doctype/leave_application/test_leave_application.py
+++ b/erpnext/hr/doctype/leave_application/test_leave_application.py
@@ -542,6 +542,19 @@
 		self.assertEquals(leave_ledger_entry[0].leaves, -9)
 		self.assertEquals(leave_ledger_entry[1].leaves, -2)
 
+	def test_leave_application_creation_after_expiry(self):
+		# test leave balance for carry forwarded allocation
+		employee = get_employee()
+		leave_type = create_leave_type(
+			leave_type_name="_Test_CF_leave_expiry",
+			is_carry_forward=1,
+			expire_carried_forward_leaves=90)
+		leave_type.submit()
+
+		create_carry_forwarded_allocation(employee, leave_type)
+
+		self.assertEquals(get_leave_balance_on(employee.name, leave_type.name, add_days(nowdate(), -85), add_days(nowdate(), -84)), 0)
+
 def create_carry_forwarded_allocation(employee, leave_type):
 		# initial leave allocation
 		leave_allocation = create_leave_allocation(
@@ -550,7 +563,7 @@
 			employee_name=employee.employee_name,
 			from_date=add_months(nowdate(), -24),
 			to_date=add_months(nowdate(), -12),
-			carry_forward=1)
+			carry_forward=0)
 		leave_allocation.submit()
 
 		leave_allocation = create_leave_allocation(
