diff --git a/erpnext/accounts/report/financial_statements.py b/erpnext/accounts/report/financial_statements.py
index 0f10b94..3e70a0e 100644
--- a/erpnext/accounts/report/financial_statements.py
+++ b/erpnext/accounts/report/financial_statements.py
@@ -170,17 +170,19 @@
 		
 	return data
 	
-def filter_out_zero_value_rows(data, parent_children_map):
+def filter_out_zero_value_rows(data, parent_children_map, show_zero_values=False):
 	data_with_value = []
 	for d in data:
-		if d.get("has_value"):
+		if show_zero_values or d.get("has_value"):
 			data_with_value.append(d)
 		else:
-			children = [child.name for child in parent_children_map.get(d.account) or []]
-			for row in data:
-				if row.account in children and row.get("has_value"):
-					data_with_value.append(d)
-					break
+			# show group with zero balance, if there are balances against child
+			children = [child.name for child in parent_children_map.get(d.get("account")) or []]
+			if children:
+				for row in data:
+					if row.get("account") in children and row.get("has_value"):
+						data_with_value.append(d)
+						break
 
 	return data_with_value
 
diff --git a/erpnext/accounts/report/trial_balance/trial_balance.py b/erpnext/accounts/report/trial_balance/trial_balance.py
index 822702b..e53d47e 100644
--- a/erpnext/accounts/report/trial_balance/trial_balance.py
+++ b/erpnext/accounts/report/trial_balance/trial_balance.py
@@ -4,8 +4,9 @@
 from __future__ import unicode_literals
 import frappe
 from frappe import _
-from frappe.utils import cint, flt, getdate, formatdate, cstr
-from erpnext.accounts.report.financial_statements import filter_accounts, set_gl_entries_by_account
+from frappe.utils import flt, getdate, formatdate, cstr
+from erpnext.accounts.report.financial_statements \
+	import filter_accounts, set_gl_entries_by_account, filter_out_zero_value_rows
 
 value_fields = ("opening_debit", "opening_credit", "debit", "credit", "closing_debit", "closing_credit")
 
@@ -56,7 +57,7 @@
 	if not accounts:
 		return None
 
-	accounts, accounts_by_name = filter_accounts(accounts)
+	accounts, accounts_by_name, parent_children_map = filter_accounts(accounts)
 
 	min_lft, max_rgt = frappe.db.sql("""select min(lft), max(rgt) from `tabAccount`
 		where company=%s""", (filters.company,))[0]
@@ -71,8 +72,10 @@
 	total_row = calculate_values(accounts, gl_entries_by_account, opening_balances, filters)
 	accumulate_values_into_parents(accounts, accounts_by_name)
 
-	data = prepare_data(accounts, filters, total_row)
-
+	data = prepare_data(accounts, filters, total_row, parent_children_map)
+	data = filter_out_zero_value_rows(data, parent_children_map, 
+		show_zero_values=filters.get("show_zero_values"))
+		
 	return data
 
 def get_opening_balances(filters):
@@ -156,10 +159,8 @@
 			for key in value_fields:
 				accounts_by_name[d.parent_account][key] += d[key]
 
-def prepare_data(accounts, filters, total_row):
-	show_zero_values = cint(filters.show_zero_values)
+def prepare_data(accounts, filters, total_row, parent_children_map):
 	data = []
-	accounts_with_zero_value = []
 	for d in accounts:
 		has_value = False
 		row = {
@@ -174,18 +175,15 @@
 		prepare_opening_and_closing(d)
 
 		for key in value_fields:
-			row[key] = d.get(key, 0.0)
-			if row[key]:
+			row[key] = flt(d.get(key, 0.0), 3)
+			
+			if abs(row[key]) >= 0.005:
+				# ignore zero values
 				has_value = True
 
-		if show_zero_values:
-			data.append(row)
-		else:
-			if not has_value:
-				accounts_with_zero_value.append(d.name)
-			elif d.parent_account not in accounts_with_zero_value:
-				data.append(row)
-
+		row["has_value"] = has_value
+		data.append(row)
+		
 	data.extend([{},total_row])
 
 	return data
