[fix] Unable to create an asset due to rounding issue
diff --git a/erpnext/accounts/doctype/asset/asset.py b/erpnext/accounts/doctype/asset/asset.py
index aa2768b..070461e 100644
--- a/erpnext/accounts/doctype/asset/asset.py
+++ b/erpnext/accounts/doctype/asset/asset.py
@@ -114,8 +114,17 @@
 
 	def set_accumulated_depreciation(self):
 		accumulated_depreciation = flt(self.opening_accumulated_depreciation)
-		for d in self.get("schedules"):
-			accumulated_depreciation  += flt(d.depreciation_amount, d.precision("depreciation_amount"))
+		value_after_depreciation = flt(self.value_after_depreciation)
+		for i, d in enumerate(self.get("schedules")):
+			depreciation_amount = flt(d.depreciation_amount, d.precision("depreciation_amount"))
+			value_after_depreciation -= flt(depreciation_amount)
+
+			if i==len(self.get("schedules"))-1 and self.depreciation_method == "Straight Line":
+				depreciation_amount += flt(value_after_depreciation - flt(self.expected_value_after_useful_life),
+					d.precision("depreciation_amount"))
+
+			d.depreciation_amount = depreciation_amount
+			accumulated_depreciation += d.depreciation_amount
 			d.accumulated_depreciation_amount = flt(accumulated_depreciation, d.precision("accumulated_depreciation_amount"))
 
 	def get_depreciation_amount(self, depreciable_value):
diff --git a/erpnext/accounts/doctype/asset/test_asset.py b/erpnext/accounts/doctype/asset/test_asset.py
index 000bc5c..a45cdce 100644
--- a/erpnext/accounts/doctype/asset/test_asset.py
+++ b/erpnext/accounts/doctype/asset/test_asset.py
@@ -5,7 +5,7 @@
 
 import frappe
 import unittest
-from frappe.utils import cstr, nowdate, getdate
+from frappe.utils import cstr, nowdate, getdate, flt
 from erpnext.accounts.doctype.asset.depreciation import post_depreciation_entries, scrap_asset, restore_asset
 from erpnext.accounts.doctype.asset.asset import make_sales_invoice, make_purchase_invoice
 
@@ -243,6 +243,23 @@
 
 		self.assertEqual(frappe.db.get_value("Asset", "Macbook Pro 1", "status"), "Partially Depreciated")
 
+	def test_asset_expected_value_after_useful_life(self):
+		asset = frappe.get_doc("Asset", "Macbook Pro 1")
+		asset.depreciation_method = "Straight Line"
+		asset.is_existing_asset = 1
+		asset.total_number_of_depreciations = 400
+		asset.gross_purchase_amount = 16866177.00
+		asset.expected_value_after_useful_life = 500000
+		asset.save()
+
+		accumulated_depreciation_after_full_schedule = \
+			max([d.accumulated_depreciation_amount for d in asset.get("schedules")])
+
+		asset_value_after_full_schedule = (flt(asset.gross_purchase_amount) -
+			flt(accumulated_depreciation_after_full_schedule))
+
+		self.assertTrue(asset.expected_value_after_useful_life >= asset_value_after_full_schedule)
+
 	def tearDown(self):
 		asset = frappe.get_doc("Asset", "Macbook Pro 1")