diff --git a/LUFA/Drivers/USB/LowLevel/Endpoint.c b/LUFA/Drivers/USB/LowLevel/Endpoint.c
index 4615baa69a12e51212a0165706259b8006c43e7a..a872a00ffd40d3b754474c7cefcb9e0745239339 100644
--- a/LUFA/Drivers/USB/LowLevel/Endpoint.c
+++ b/LUFA/Drivers/USB/LowLevel/Endpoint.c
@@ -117,7 +117,7 @@ uint8_t Endpoint_Discard_Stream(uint16_t Length
 	if ((ErrorCode = Endpoint_WaitUntilReady()))
 	  return ErrorCode;
 
-	while (Length--)
+	while (Length)
 	{
 		if (!(Endpoint_IsReadWriteAllowed()))
 		{
@@ -134,6 +134,7 @@ uint8_t Endpoint_Discard_Stream(uint16_t Length
 		else
 		{
 			Endpoint_Discard_Byte();
+			Length--;
 		}
 	}
 	
@@ -152,7 +153,7 @@ uint8_t Endpoint_Write_Stream_LE(const void* Buffer, uint16_t Length
 	if ((ErrorCode = Endpoint_WaitUntilReady()))
 	  return ErrorCode;
 
-	while (Length--)
+	while (Length)
 	{
 		if (!(Endpoint_IsReadWriteAllowed()))
 		{
@@ -169,6 +170,7 @@ uint8_t Endpoint_Write_Stream_LE(const void* Buffer, uint16_t Length
 		else
 		{
 			Endpoint_Write_Byte(*(DataStream++));
+			Length--;
 		}
 	}
 	
@@ -187,7 +189,7 @@ uint8_t Endpoint_Write_Stream_BE(const void* Buffer, uint16_t Length
 	if ((ErrorCode = Endpoint_WaitUntilReady()))
 	  return ErrorCode;
 
-	while (Length--)
+	while (Length)
 	{
 		if (!(Endpoint_IsReadWriteAllowed()))
 		{
@@ -204,6 +206,7 @@ uint8_t Endpoint_Write_Stream_BE(const void* Buffer, uint16_t Length
 		else
 		{
 			Endpoint_Write_Byte(*(DataStream--));
+			Length--;
 		}
 	}
 	
@@ -222,7 +225,7 @@ uint8_t Endpoint_Read_Stream_LE(void* Buffer, uint16_t Length
 	if ((ErrorCode = Endpoint_WaitUntilReady()))
 	  return ErrorCode;
 
-	while (Length--)
+	while (Length)
 	{
 		if (!(Endpoint_IsReadWriteAllowed()))
 		{
@@ -239,6 +242,7 @@ uint8_t Endpoint_Read_Stream_LE(void* Buffer, uint16_t Length
 		else
 		{
 			*(DataStream++) = Endpoint_Read_Byte();
+			Length--;
 		}
 	}
 	
@@ -257,7 +261,7 @@ uint8_t Endpoint_Read_Stream_BE(void* Buffer, uint16_t Length
 	if ((ErrorCode = Endpoint_WaitUntilReady()))
 	  return ErrorCode;
 
-	while (Length--)
+	while (Length)
 	{
 		if (!(Endpoint_IsReadWriteAllowed()))
 		{
@@ -274,6 +278,7 @@ uint8_t Endpoint_Read_Stream_BE(void* Buffer, uint16_t Length
 		else
 		{
 			*(DataStream--) = Endpoint_Read_Byte();
+			Length--;
 		}
 	}
 	
@@ -294,7 +299,6 @@ uint8_t Endpoint_Write_Control_Stream_LE(const void* Buffer, uint16_t Length)
 		while (Length && (Endpoint_BytesInEndpoint() < USB_ControlEndpointSize))
 		{
 			Endpoint_Write_Byte(*(DataStream++));
-			
 			Length--;
 		}
 		
@@ -329,7 +333,6 @@ uint8_t Endpoint_Write_Control_Stream_BE(const void* Buffer, uint16_t Length)
 		while (Length && (Endpoint_BytesInEndpoint() < USB_ControlEndpointSize))
 		{
 			Endpoint_Write_Byte(*(DataStream--));
-			
 			Length--;
 		}
 		
@@ -362,7 +365,6 @@ uint8_t Endpoint_Read_Control_Stream_LE(void* Buffer, uint16_t Length)
 		while (Length && Endpoint_BytesInEndpoint())
 		{
 			*(DataStream++) = Endpoint_Read_Byte();
-			
 			Length--;
 		}
 		
@@ -385,7 +387,6 @@ uint8_t Endpoint_Read_Control_Stream_BE(void* Buffer, uint16_t Length)
 		while (Length && Endpoint_BytesInEndpoint())
 		{
 			*(DataStream--) = Endpoint_Read_Byte();
-			
 			Length--;
 		}
 		
diff --git a/LUFA/Drivers/USB/LowLevel/Pipe.c b/LUFA/Drivers/USB/LowLevel/Pipe.c
index ff4318c9950763242925fea9dafcef400794e965..4bd89ecb568d8da9b29a62b51250c3d68747708d 100644
--- a/LUFA/Drivers/USB/LowLevel/Pipe.c
+++ b/LUFA/Drivers/USB/LowLevel/Pipe.c
@@ -114,7 +114,7 @@ uint8_t Pipe_Write_Stream_LE(const void* Data, uint16_t Length
 	if ((ErrorCode = Pipe_WaitUntilReady()))
 	  return ErrorCode;
 
-	while (Length--)
+	while (Length)
 	{
 		if (!(Pipe_IsReadWriteAllowed()))
 		{
@@ -131,6 +131,7 @@ uint8_t Pipe_Write_Stream_LE(const void* Data, uint16_t Length
 		else
 		{
 			Pipe_Write_Byte(*(DataStream++));
+			Length--;
 		}
 	}
 
@@ -149,7 +150,7 @@ uint8_t Pipe_Write_Stream_BE(const void* Data, uint16_t Length
 	if ((ErrorCode = Pipe_WaitUntilReady()))
 	  return ErrorCode;
 
-	while (Length--)
+	while (Length)
 	{
 		if (!(Pipe_IsReadWriteAllowed()))
 		{
@@ -166,6 +167,7 @@ uint8_t Pipe_Write_Stream_BE(const void* Data, uint16_t Length
 		else
 		{
 			Pipe_Write_Byte(*(DataStream--));
+			Length--;
 		}
 	}
 
@@ -183,7 +185,7 @@ uint8_t Pipe_Discard_Stream(uint16_t Length
 	if ((ErrorCode = Pipe_WaitUntilReady()))
 	  return ErrorCode;
 
-	while (Length--)
+	while (Length)
 	{
 		if (!(Pipe_IsReadWriteAllowed()))
 		{
@@ -200,6 +202,7 @@ uint8_t Pipe_Discard_Stream(uint16_t Length
 		else
 		{
 			Pipe_Discard_Byte();
+			Length--;
 		}
 	}
 
@@ -218,7 +221,7 @@ uint8_t Pipe_Read_Stream_LE(void* Buffer, uint16_t Length
 	if ((ErrorCode = Pipe_WaitUntilReady()))
 	  return ErrorCode;
 
-	while (Length--)
+	while (Length)
 	{
 		if (!(Pipe_IsReadWriteAllowed()))
 		{
@@ -235,6 +238,7 @@ uint8_t Pipe_Read_Stream_LE(void* Buffer, uint16_t Length
 		else
 		{
 			*(DataStream++) = Pipe_Read_Byte();
+			Length--;
 		}
 	}
 
@@ -253,7 +257,7 @@ uint8_t Pipe_Read_Stream_BE(void* Buffer, uint16_t Length
 	if ((ErrorCode = Pipe_WaitUntilReady()))
 	  return ErrorCode;
 
-	while (Length--)
+	while (Length)
 	{
 		if (!(Pipe_IsReadWriteAllowed()))
 		{
@@ -270,6 +274,7 @@ uint8_t Pipe_Read_Stream_BE(void* Buffer, uint16_t Length
 		else
 		{
 			*(DataStream--) = Pipe_Read_Byte();
+			Length--;
 		}
 	}