diff --git a/erpnext/accounts/doctype/period_closing_voucher/period_closing_voucher.py b/erpnext/accounts/doctype/period_closing_voucher/period_closing_voucher.py
index c4fbea4..aba43a6 100644
--- a/erpnext/accounts/doctype/period_closing_voucher/period_closing_voucher.py
+++ b/erpnext/accounts/doctype/period_closing_voucher/period_closing_voucher.py
@@ -50,6 +50,7 @@
 		gl_entries = []
 		net_pl_balance = 0
 		pl_accounts = self.get_pl_balances()
+		
 		for acc in pl_accounts:
 			if flt(acc.balance_in_company_currency):
 				gl_entries.append(self.get_gl_dict({
@@ -66,7 +67,7 @@
 				}))
 
 				net_pl_balance += flt(acc.balance_in_company_currency)
-
+		
 		if net_pl_balance:
 			gl_entries.append(self.get_gl_dict({
 				"account": self.closing_account_head,
diff --git a/erpnext/accounts/doctype/period_closing_voucher/test_period_closing_voucher.py b/erpnext/accounts/doctype/period_closing_voucher/test_period_closing_voucher.py
index 0b59746..db4dad4 100644
--- a/erpnext/accounts/doctype/period_closing_voucher/test_period_closing_voucher.py
+++ b/erpnext/accounts/doctype/period_closing_voucher/test_period_closing_voucher.py
@@ -5,42 +5,74 @@
 from __future__ import unicode_literals
 import unittest
 import frappe
-from frappe.utils import flt
+from frappe.utils import flt, today
+from erpnext.accounts.utils import get_fiscal_year
 from erpnext.accounts.doctype.journal_entry.test_journal_entry import make_journal_entry
 
 class TestPeriodClosingVoucher(unittest.TestCase):
 	def test_closing_entry(self):
+		year_start_date = get_fiscal_year(today())[1]
+		
 		make_journal_entry("_Test Bank - _TC", "Sales - _TC", 400, 
 			"_Test Cost Center - _TC", submit=True)
 		
 		make_journal_entry("_Test Account Cost for Goods Sold - _TC", 
 			"_Test Bank - _TC", 600, "_Test Cost Center - _TC", submit=True)
 			
+		random_expense_account = frappe.db.sql("""
+			select t1.account, 
+				sum(ifnull(t1.debit,0))-sum(ifnull(t1.credit,0)) as balance,
+				sum(ifnull(t1.debit_in_account_currency,0))-sum(ifnull(t1.credit_in_account_currency,0)) \
+					as balance_in_account_currency
+			from `tabGL Entry` t1, `tabAccount` t2
+			where t1.account = t2.name and ifnull(t2.root_type, '') = 'Expense'
+				and t2.docstatus < 2 and t2.company = '_Test Company'
+				and t1.posting_date between %s and %s
+			group by t1.account
+			having sum(ifnull(t1.debit,0)) > sum(ifnull(t1.credit,0))
+			limit 1""", (year_start_date, today()), as_dict=True)
+			
 		profit_or_loss = frappe.db.sql("""select sum(ifnull(t1.debit,0))-sum(ifnull(t1.credit,0)) as balance
 			from `tabGL Entry` t1, `tabAccount` t2
 			where t1.account = t2.name and ifnull(t2.report_type, '') = 'Profit and Loss'
 			and t2.docstatus < 2 and t2.company = '_Test Company'
-			and t1.posting_date between '2013-01-01' and '2013-12-31'""")
+			and t1.posting_date between %s and %s""", (year_start_date, today()))
 			
 		profit_or_loss = flt(profit_or_loss[0][0]) if profit_or_loss else 0
 		
 		pcv = self.make_period_closing_voucher()
 		
-		gle_value = frappe.db.sql("""select ifnull(debit, 0) - ifnull(credit, 0)
+		# Check value for closing account
+		gle_amount_for_closing_account = frappe.db.sql("""select ifnull(debit, 0) - ifnull(credit, 0)
 			from `tabGL Entry` where voucher_type='Period Closing Voucher' and voucher_no=%s
 			and account = '_Test Account Reserves and Surplus - _TC'""", pcv.name)
 			
-		gle_value = flt(gle_value[0][0]) if gle_value else 0
+		gle_amount_for_closing_account = flt(gle_amount_for_closing_account[0][0]) \
+			if gle_amount_for_closing_account else 0
 
-		self.assertEqual(gle_value, profit_or_loss)
+		self.assertEqual(gle_amount_for_closing_account, profit_or_loss)
+		
+		if random_expense_account:
+			# Check posted value for teh above random_expense_account
+			gle_for_random_expense_account = frappe.db.sql("""
+				select ifnull(debit, 0) - ifnull(credit, 0) as amount,
+					ifnull(debit_in_account_currency, 0) - ifnull(credit_in_account_currency, 0) 
+						as amount_in_account_currency
+				from `tabGL Entry` 
+				where voucher_type='Period Closing Voucher' and voucher_no=%s and account =%s""", 
+				(pcv.name, random_expense_account[0].account), as_dict=True)
+			
+			self.assertEqual(gle_for_random_expense_account[0].amount, -1*random_expense_account[0].balance)
+			self.assertEqual(gle_for_random_expense_account[0].amount_in_account_currency, 
+				-1*random_expense_account[0].balance_in_account_currency)
 		
 	def make_period_closing_voucher(self):
 		pcv = frappe.get_doc({
 			"doctype": "Period Closing Voucher",
 			"closing_account_head": "_Test Account Reserves and Surplus - _TC",
 			"company": "_Test Company",
-			"fiscal_year": "_Test Fiscal Year 2013",
-			"posting_date": "2013-12-31",
+			"fiscal_year": get_fiscal_year(today())[0],
+			"posting_date": today(),
 			"remarks": "test"
 		})
 		pcv.insert()
