diff --git a/erpnext/hr/doctype/leave_allocation/leave_allocation.py b/erpnext/hr/doctype/leave_allocation/leave_allocation.py
index 0c00aff..f7db7de 100755
--- a/erpnext/hr/doctype/leave_allocation/leave_allocation.py
+++ b/erpnext/hr/doctype/leave_allocation/leave_allocation.py
@@ -19,19 +19,19 @@
 	def validate(self):
 		self.validate_period()
 		self.validate_lwp()
+		set_employee_name(self)
+		self.set_total_leaves_allocated()
 		self.validate_allocation_overlap()
 		self.validate_back_dated_allocation()
 		self.validate_total_leaves_allocated()
-		set_employee_name(self)
 		self.validate_leaves_allocated_value()
 		self.validate_leave_allocation_days()
-		self.set_total_leaves_allocated()
 
 	def validate_leave_allocation_days(self):
-		new_leaves = self.new_leaves_allocate if not self.carry_forward else self.carry_forwarded_leaves
+		new_leaves = self.new_leaves_allocated if not self.carry_forward else self.carry_forwarded_leaves
 		max_leaves, leaves_allocated = self.get_max_leaves_with_leaves_allocated_for_leave_type(flt(new_leaves))
 
-		if leave_allocated > max_leaves:
+		if leaves_allocated > max_leaves:
 			frappe.throw(_("Total allocated leaves are more days than maximum allocation of {0} leave type for employee {1} in the period")\
 			.format(self.leave_type, self.employee))
 
@@ -52,8 +52,9 @@
 		# check if the allocation period is more than the expiry allows for carry forwarded allocation
 		if self.carry_forward:
 			expiry_days = get_days_to_expiry_for_leave_type(self.leave_type)
-			if allocation_period > expiry_days:
-				frappe.throw(_("Leave allocation period cannot be more than the expiry days allocated"))
+
+			if allocation_period > flt(expiry_days) and expiry_days:
+				frappe.throw(_("Leave allocation period cannot exceed carry forward expiry limit"))
 
 	def validate_lwp(self):
 		if frappe.db.get_value("Leave Type", self.leave_type, "is_lwp"):
@@ -109,7 +110,7 @@
 	def validate_total_leaves_allocated(self):
 		# Adding a day to include To Date in the difference
 		date_difference = date_diff(self.to_date, self.from_date) + 1
-		if date_difference < self.total_leaves_allocated:
+		if date_difference < flt(self.total_leaves_allocated):
 			frappe.throw(_("Total allocated leaves are more than days in the period"), OverAllocationError)
 
 	def validate_against_leave_applications(self):
@@ -133,13 +134,13 @@
 	def get_max_leaves_with_leaves_allocated_for_leave_type(self, new_leaves):
 		''' compare new leaves allocated with max leaves '''
 		company = frappe.db.get_value("Employee", self.employee, "company")
+		leaves_allocated = 0
 		leave_period = get_leave_period(self.from_date, self.to_date, company)
 		max_leaves_allowed = frappe.db.get_value("Leave Type", self.leave_type, "max_leaves_allowed")
 		if max_leaves_allowed > 0:
-			leave_allocated = 0
 			if leave_period:
-				leave_allocated = get_leave_allocation_for_period(self.employee, self.leave_type, leave_period[0].from_date, leave_period[0].to_date)
-			leave_allocated += new_leaves
+				leaves_allocated = get_leave_allocation_for_period(self.employee, self.leave_type, leave_period[0].from_date, leave_period[0].to_date)
+			leaves_allocated += new_leaves
 		return max_leaves_allowed, leaves_allocated
 
 def get_leave_allocation_for_period(employee, leave_type, from_date, to_date):
@@ -184,12 +185,12 @@
 		"docstatus": 1,
 		"to_date": ("<", date)
 	}
-	limit = 1
+	limit = 2
 
 	# check number of days to expire, ignore expiry for default value 0
 	if expiry_days:
 		filters.update(carry_forward=0)
-		limit = 2
+		limit = 1
 
 	previous_allocation = frappe.get_all("Leave Allocation",
 		filters=filters,
@@ -207,12 +208,10 @@
 
 def get_days_to_expiry_for_leave_type(leave_type):
 	''' returns days to expiry for a provided leave type '''
-	expiry_days = frappe.db.get_value("Leave Type",
-		filters={"leave_type": leave_type, "is_carry_forward": 1},
+	return frappe.db.get_value("Leave Type",
+		filters={"leave_type_name": leave_type, "is_carry_forward": 1},
 		fieldname="carry_forward_leave_expiry")
 
-
-
 def validate_carry_forward(leave_type):
 	if not frappe.db.get_value("Leave Type", leave_type, "is_carry_forward"):
 		frappe.throw(_("Leave Type {0} cannot be carry-forwarded").format(leave_type))
\ No newline at end of file
diff --git a/erpnext/hr/doctype/leave_period/leave_period.py b/erpnext/hr/doctype/leave_period/leave_period.py
index 0c83a1e..a6198a8 100644
--- a/erpnext/hr/doctype/leave_period/leave_period.py
+++ b/erpnext/hr/doctype/leave_period/leave_period.py
@@ -120,6 +120,9 @@
 	return allocation.name
 
 def create_carry_forward_leaves_allocation(employee, leave_type, leave_type_details, leave_period, carry_forward_leaves):
+	carry_forwarded_leaves = get_carry_forwarded_leaves(employee, leave_type, leave_period.from_date)
+	if not carry_forwarded_leaves:
+		return
 	allocation = frappe.new_doc("Leave Allocation")
 	allocation.employee = employee
 	allocation.leave_type = leave_type
@@ -127,6 +130,6 @@
 	allocation.to_date = add_days(leave_period.from_date, leave_type_details.carry_forward_leave_expiry) if not leave_type_details.carry_forward_leave_expiry else leave_period.to_date
 	allocation.leave_period = leave_period.name
 	allocation.carry_forward = carry_forward_leaves
-	allocation.carry_forwarded_leaves = get_carry_forwarded_leaves(employee, leave_type, leave_period.from_date)
+	allocation.carry_forwarded_leaves = carry_forwarded_leaves
 	allocation.save(ignore_permissions=True)
 	allocation.submit()
\ No newline at end of file
diff --git a/erpnext/hr/doctype/leave_type/leave_type.py b/erpnext/hr/doctype/leave_type/leave_type.py
index da21f78..dcae5fe 100644
--- a/erpnext/hr/doctype/leave_type/leave_type.py
+++ b/erpnext/hr/doctype/leave_type/leave_type.py
@@ -15,6 +15,6 @@
 			self.validate_carry_forward()
 
 	def validate_carry_forward(self):
-		max_days = 366 if calendar.isleap(datetime.now().year) else 365
+		max_days = 367 if calendar.isleap(datetime.now().year) else 366
 		if not (0 <= self.carry_forward_leave_expiry <= max_days):
-			frappe.throw(_('Invalid entry!! Carried forward days need to expire within a year'))
+			frappe.throw(_('Invalid entry!! Carried forward days need to expire within a year'))
\ No newline at end of file
