diff --git a/Bootloaders/TeensyHID/makefile b/Bootloaders/TeensyHID/makefile
index 9a9f5ff0dfc279ae2fcf7eb34d3fbc0c3a96a560..404b55f9c8a8f0f732c907b13917415ec2fb908a 100644
--- a/Bootloaders/TeensyHID/makefile
+++ b/Bootloaders/TeensyHID/makefile
@@ -68,7 +68,7 @@ BOARD  =
 #     does not *change* the processor frequency - it should merely be updated to
 #     reflect the processor speed set externally so that the code can use accurate
 #     software delays.
-F_CPU = 8000000
+F_CPU = 16000000
 
 
 # Input clock frequency.
diff --git a/LUFA/Drivers/USB/Class/Device/CDC.c b/LUFA/Drivers/USB/Class/Device/CDC.c
index 4cdea9485ca81a00110a8648f126207899667347..ade2a1b505b9b86187879924a6fe9ed8fd75ef04 100644
--- a/LUFA/Drivers/USB/Class/Device/CDC.c
+++ b/LUFA/Drivers/USB/Class/Device/CDC.c
@@ -195,9 +195,14 @@ uint16_t CDC_Device_BytesReceived(USB_ClassInfo_CDC_Device_t* const CDCInterface
 	if (Endpoint_IsOUTReceived())
 	{
 		if (!(Endpoint_BytesInEndpoint()))
-		  Endpoint_ClearOUT();
-
-		return Endpoint_BytesInEndpoint();
+		{
+			Endpoint_ClearOUT();
+			return 0;
+		}
+		else
+		{
+			return Endpoint_BytesInEndpoint();
+		}
 	}
 	else
 	{
diff --git a/LUFA/Drivers/USB/Class/Host/CDC.c b/LUFA/Drivers/USB/Class/Host/CDC.c
index cc1ff8a0b2a286a47aec63bbe7de0c821a1f4df5..bc8e089a8d4c19f6f981d5e9ddaf660d3f28886a 100644
--- a/LUFA/Drivers/USB/Class/Host/CDC.c
+++ b/LUFA/Drivers/USB/Class/Host/CDC.c
@@ -315,12 +315,16 @@ uint16_t CDC_Host_BytesReceived(USB_ClassInfo_CDC_Host_t* const CDCInterfaceInfo
 	if (Pipe_IsINReceived())
 	{
 		if (!(Pipe_BytesInPipe()))
-		  Pipe_ClearIN();
-		
-		BytesInPipe = Pipe_BytesInPipe();
-		Pipe_Freeze();
-		
-		return BytesInPipe;
+		{
+			Pipe_ClearIN();
+			Pipe_Freeze();
+			return 0;
+		}
+		else
+		{
+			Pipe_Freeze();
+			return Pipe_BytesInPipe();
+		}
 	}
 	else
 	{