diff --git a/erpnext/accounts/report/bank_reconciliation_statement/bank_reconciliation_statement.py b/erpnext/accounts/report/bank_reconciliation_statement/bank_reconciliation_statement.py
index 119de09..4fda030 100644
--- a/erpnext/accounts/report/bank_reconciliation_statement/bank_reconciliation_statement.py
+++ b/erpnext/accounts/report/bank_reconciliation_statement/bank_reconciliation_statement.py
@@ -4,6 +4,7 @@
 from __future__ import unicode_literals
 import frappe
 from frappe.utils import flt
+from frappe import _
 
 def execute(filters=None):
 	if not filters: filters = {}
@@ -15,25 +16,38 @@
 	data = get_entries(filters)
 
 	from erpnext.accounts.utils import get_balance_on
-	balance_as_per_company = get_balance_on(filters["account"], filters["report_date"])
+	balance_as_per_system = get_balance_on(filters["account"], filters["report_date"])
 
 	total_debit, total_credit = 0,0
 	for d in data:
 		total_debit += flt(d[2])
 		total_credit += flt(d[3])
 
-	bank_bal = flt(balance_as_per_company) - flt(total_debit) + flt(total_credit)
+	amounts_not_reflected_in_system = frappe.db.sql("""select sum(ifnull(jvd.debit, 0) - ifnull(jvd.credit, 0))
+		from `tabJournal Voucher Detail` jvd, `tabJournal Voucher` jv
+		where jvd.parent = jv.name and jv.docstatus=1 and jvd.account=%s
+		and jv.posting_date > %s and jv.clearance_date <= %s
+		""", (filters["account"], filters["report_date"], filters["report_date"]))
+
+	amounts_not_reflected_in_system = flt(amounts_not_reflected_in_system[0][0]) \
+		if amounts_not_reflected_in_system else 0.0
+
+	bank_bal = flt(balance_as_per_system) - flt(total_debit) + flt(total_credit) \
+		+ amounts_not_reflected_in_system
 
 	data += [
-		get_balance_row("Balance as per company books", balance_as_per_company),
-		["", "Amounts not reflected in bank", total_debit, total_credit, "", "", "", ""],
-		get_balance_row("Balance as per bank", bank_bal)
+		get_balance_row(_("System Balance"), balance_as_per_system),
+		[""]*len(columns),
+		["", _("Amounts not reflected in bank"), total_debit, total_credit, "", "", "", ""],
+		get_balance_row(_("Amounts not reflected in system"), amounts_not_reflected_in_system),
+		[""]*len(columns),
+		get_balance_row(_("Expected balance as per bank"), bank_bal)
 	]
 
 	return columns, data
 
 def get_columns():
-	return ["Posting Date:Date:100", "Journal Voucher:Link/Journal Voucher:200",
+	return ["Posting Date:Date:100", "Journal Voucher:Link/Journal Voucher:220",
 		"Debit:Currency:120", "Credit:Currency:120",
 		"Against Account:Link/Account:200", "Reference::100", "Ref Date:Date:110", "Clearance Date:Date:110"
 	]
@@ -55,4 +69,4 @@
 	if amount > 0:
 		return ["", label, amount, 0, "", "", "", ""]
 	else:
-		return ["", label, 0, amount, "", "", "", ""]
+		return ["", label, 0, abs(amount), "", "", "", ""]
