diff --git a/erpnext/stock/stock_ledger.py b/erpnext/stock/stock_ledger.py
index a5deb30..c92663f 100644
--- a/erpnext/stock/stock_ledger.py
+++ b/erpnext/stock/stock_ledger.py
@@ -300,22 +300,22 @@
 
 				# select first batch or the batch with same rate
 				batch = self.stock_queue[index]
+				if batch[0]:
+					if qty_to_pop >= batch[0]:
+						# consume current batch
+						qty_to_pop = qty_to_pop - batch[0]
+						self.stock_queue.pop(index)
+						if not self.stock_queue and qty_to_pop:
+							# stock finished, qty still remains to be withdrawn
+							# negative stock, keep in as a negative batch
+							self.stock_queue.append([-qty_to_pop, outgoing_rate or batch[1]])
+							break
 
-				if qty_to_pop >= batch[0]:
-					# consume current batch
-					qty_to_pop = qty_to_pop - batch[0]
-					self.stock_queue.pop(index)
-					if not self.stock_queue and qty_to_pop:
-						# stock finished, qty still remains to be withdrawn
-						# negative stock, keep in as a negative batch
-						self.stock_queue.append([-qty_to_pop, outgoing_rate or batch[1]])
-						break
-
-				else:
-					# qty found in current batch
-					# consume it and exit
-					batch[0] = batch[0] - qty_to_pop
-					qty_to_pop = 0
+					else:
+						# qty found in current batch
+						# consume it and exit
+						batch[0] = batch[0] - qty_to_pop
+						qty_to_pop = 0
 
 		stock_value = sum((flt(batch[0]) * flt(batch[1]) for batch in self.stock_queue))
 		stock_qty = sum((flt(batch[0]) for batch in self.stock_queue))
diff --git a/erpnext/stock/utils.py b/erpnext/stock/utils.py
index ee4303b..4f1e427 100644
--- a/erpnext/stock/utils.py
+++ b/erpnext/stock/utils.py
@@ -133,19 +133,20 @@
 		qty_to_pop = abs(qty)
 		while qty_to_pop and previous_stock_queue:
 			batch = previous_stock_queue[0]
-			if 0 < batch[0] <= qty_to_pop:
-				# if batch qty > 0
-				# not enough or exactly same qty in current batch, clear batch
-				available_qty_for_outgoing += flt(batch[0])
-				outgoing_cost += flt(batch[0]) * flt(batch[1])
-				qty_to_pop -= batch[0]
-				previous_stock_queue.pop(0)
-			else:
-				# all from current batch
-				available_qty_for_outgoing += flt(qty_to_pop)
-				outgoing_cost += flt(qty_to_pop) * flt(batch[1])
-				batch[0] -= qty_to_pop
-				qty_to_pop = 0
+			if batch[0]:
+				if 0 < batch[0] <= qty_to_pop:
+					# if batch qty > 0
+					# not enough or exactly same qty in current batch, clear batch
+					available_qty_for_outgoing += flt(batch[0])
+					outgoing_cost += flt(batch[0]) * flt(batch[1])
+					qty_to_pop -= batch[0]
+					previous_stock_queue.pop(0)
+				else:
+					# all from current batch
+					available_qty_for_outgoing += flt(qty_to_pop)
+					outgoing_cost += flt(qty_to_pop) * flt(batch[1])
+					batch[0] -= qty_to_pop
+					qty_to_pop = 0
 
 		return outgoing_cost / available_qty_for_outgoing
 
