diff --git a/src/patcher_mips32.cpp b/src/patcher_mips32.cpp
index 2119163165f93a6d7c94a5b2b3f25352e5c0758e..485c0d23ebec412533d81afd433244fe3e2bf7fe 100644
--- a/src/patcher_mips32.cpp
+++ b/src/patcher_mips32.cpp
@@ -64,9 +64,12 @@ void ZiprPatcherMIPS32_t::ApplyNopToPatch(RangeAddress_t addr)
 
 void ZiprPatcherMIPS32_t::ApplyPatch(RangeAddress_t from_addr, RangeAddress_t to_addr)
 { 
-	const auto mask6      = 0b111111;
-        const auto first_byte = (uint8_t)memory_space[from_addr+0];
-	const auto top6bits   = (first_byte >> 2) & mask6;
+	const auto mask6       = 0b111111;
+        const auto first_byte  = (uint8_t)memory_space[from_addr+0];
+        const auto second_byte = (uint8_t)memory_space[from_addr+1];
+	const auto top6bits    = (first_byte >> 2) & mask6;
+	const auto top16bits   = (uint32_t(first_byte) << 8) | second_byte;
+	const auto top16bits_nocc  = top16bits & ~(0b11100);
 
 
 	if(
@@ -75,7 +78,9 @@ void ZiprPatcherMIPS32_t::ApplyPatch(RangeAddress_t from_addr, RangeAddress_t to
 		top6bits == 0b000111 ||  // bgtz, 
 		top6bits == 0b000110 ||  // blez, 
 		top6bits == 0b000110 ||  // blez, 
-		top6bits == 0b000101     // bne
+		top6bits == 0b000101 ||  // bne
+		top16bits_nocc == 0b0100010100000000 ||  // bc1f
+		top16bits_nocc == 0b0100010100000001     // bc1t
 		) 
 	{
 		const auto new_offset  = (int32_t)((to_addr) - (from_addr+4)) >> 2;