diff --git a/erpnext/accounts/report/accounts_receivable/accounts_receivable.py b/erpnext/accounts/report/accounts_receivable/accounts_receivable.py
index c8f9b6f..b262311 100755
--- a/erpnext/accounts/report/accounts_receivable/accounts_receivable.py
+++ b/erpnext/accounts/report/accounts_receivable/accounts_receivable.py
@@ -198,10 +198,15 @@
 					if self.filters.based_on_payment_terms and self.payment_term_map.get(gle.voucher_no):
 						pdc_amount = flt(self.pdc_details.get((gle.voucher_no, gle.party), {}).get("pdc_amount"))
 						for d in self.payment_term_map.get(gle.voucher_no):
-							if payment_amount + credit_note_amount >= d[1]:
-								temp = payment_amount
-								payment_amount = payment_amount - d[1] + credit_note_amount
-								credit_note_amount = credit_note_amount - d[1] + temp - payment_amount
+							term_outstanding_amount = 0
+							if payment_amount >= d[1]:
+								payment_amount = payment_amount - d[1]
+								if credit_note_amount:
+										term_outstanding_amount -= credit_note_amount
+										row = self.prepare_row(party_naming_by, args, gle, term_outstanding_amount,
+										credit_note_amount, d[0], payment_amount , d[1], d[2], 0)
+										credit_note_amount = 0
+										data.append(row)
 							else:
 								outstanding_amount = d[1] - payment_amount - credit_note_amount
 								if pdc_amount > outstanding_amount:
@@ -222,7 +227,7 @@
 						data.append(row)
 		return data
 
-	def prepare_row(self, party_naming_by, args, gle, outstanding_amount, credit_note_amount, 
+	def prepare_row(self, party_naming_by, args, gle, outstanding_amount, credit_note_amount,
 		due_date=None, paid_amt=None, payment_term_amount=None, payment_term=None, pdc_amount=None):
 		row = [gle.posting_date, gle.party]
 
@@ -258,8 +263,8 @@
 
 		# ageing data
 		if self.filters.ageing_based_on == "Due Date":
-			entry_date = due_date 
-		elif self.filters.ageing_based_on == "Supplier Invoice Date": 
+			entry_date = due_date
+		elif self.filters.ageing_based_on == "Supplier Invoice Date":
 			entry_date = bill_date
 		else:
 			entry_date = gle.posting_date
@@ -450,7 +455,7 @@
 				conditions.append("""party in (select name from tabCustomer
 					where exists(select name from `tabCustomer Group` where lft >= {0} and rgt <= {1}
 						and name=tabCustomer.customer_group))""".format(lft, rgt))
-			
+
 			if self.filters.get("territory"):
 				lft, rgt = frappe.db.get_value("Territory",
 					self.filters.get("territory"), ["lft", "rgt"])
@@ -482,7 +487,7 @@
 				conditions.append("""party in (select name from tabSupplier
 					where supplier_group=%s)""")
 				values.append(self.filters.get("supplier_group"))
-								
+
 		return " and ".join(conditions), values
 
 	def get_gl_entries_for(self, party, party_type, against_voucher_type, against_voucher):
@@ -505,7 +510,7 @@
 			party_account_currency, currency, si.conversion_rate,
 			ps.due_date, ps.payment_amount, ps.description
 			from `tabSales Invoice` si, `tabPayment Schedule` ps
-			where si.name = ps.parent and 
+			where si.name = ps.parent and
 			si.docstatus = 1 and si.company = '%s' and
 			si.name in (%s) order by ps.due_date"""
 		% (self.filters.company, ','.join(['%s'] *len(voucher_nos))), (tuple(voucher_nos)), as_dict = 1):
@@ -577,7 +582,7 @@
 		on
 			(pref.parent = pent.name)
 		where
-			pent.docstatus < 2 and pent.posting_date > %s 
+			pent.docstatus < 2 and pent.posting_date > %s
 			and pent.party_type = %s
 			group by pent.party, pref.reference_name""", (report_date, party_type), as_dict=1):
 			pdc_details.setdefault((pdc.invoice_no, pdc.party), pdc)
