diff --git a/examples/EC22.s b/examples/EC22.s
new file mode 100644
index 0000000000000000000000000000000000000000..023976a7d2f08d81d48f20b2b1628df95b227018
--- /dev/null
+++ b/examples/EC22.s
@@ -0,0 +1,6 @@
+     MOV R1 0
+     MOV R2 2
+     MOV R3 3
+     DIV R3 R1 R2
+     RET R3
+
diff --git a/mutants/mutant-2/swen90006/machine/Machine.java b/mutants/mutant-2/swen90006/machine/Machine.java
index 1ff5cbf47db17acd1b5ae71b1697fc70bdca7cc2..8ba0f3820b8e69cafb480067d5d882f2995e915e 100644
--- a/mutants/mutant-2/swen90006/machine/Machine.java
+++ b/mutants/mutant-2/swen90006/machine/Machine.java
@@ -211,7 +211,7 @@ public class Machine
 	int rs2 = parseReg(toks[3]);
 	do_add(rd,rs1,rs2);
       } else if (toks[0].equals(INSTRUCTION_SUBTRACT)){
-	if (toks.length == 4){
+	if (toks.length != 4){
 	  throw new InvalidInstructionException();
 	}
 	int rd = parseReg(toks[1]);
@@ -275,7 +275,7 @@ public class Machine
 	}
 	int ra = parseReg(toks[1]);
 	int offs = parseOffset(toks[2]);
-	if (regs[ra] == 0){
+	if (regs[ra] != 0){
 	  pc = pc + offs;
 	}else{
 	  pc = pc + 1;
diff --git a/mutants/mutant-3/swen90006/machine/Machine.java b/mutants/mutant-3/swen90006/machine/Machine.java
index ea9d43b06cc9f16d05e1af3338dc3f815f1d2511..70f63e09096ce06c780caa62dee7c28d9154c9f9 100644
--- a/mutants/mutant-3/swen90006/machine/Machine.java
+++ b/mutants/mutant-3/swen90006/machine/Machine.java
@@ -91,9 +91,9 @@ public class Machine
   }
 
   private void do_store(int a, int offs, int b)  {
-    if (regs[a] + offs < MAX_ADDR){
+    if (regs[b] + offs > MAX_ADDR){
       /* no op */
-    }else if(regs[a] + offs > 0){
+    }else if(regs[a] + offs < 0){
       /* no op */
     }else{
       memory[regs[a] + offs] = regs[b];
diff --git a/mutants/mutant-4/swen90006/machine/Machine.java b/mutants/mutant-4/swen90006/machine/Machine.java
index f3d8622cca181d580d3c3e7adf90010b312db690..7c95d0ba3df955a7430500f1bcd350d38f579279 100644
--- a/mutants/mutant-4/swen90006/machine/Machine.java
+++ b/mutants/mutant-4/swen90006/machine/Machine.java
@@ -58,7 +58,7 @@ public class Machine
 
   private void do_add(int dest, int src1, int src2)
   {
-    regs[dest] = regs[src1] = regs[src2];
+    regs[dest] = regs[src1] + regs[src2];
   }
     
   private void do_sub(int dest, int src1, int src2)
@@ -73,7 +73,7 @@ public class Machine
     
   private void do_div(int dest, int src1, int src2)
   {
-    if (regs[src2] == 0){
+    if (regs[src1] == 0){
       /* no op */
     }else{
       regs[dest] = regs[src1] / regs[src2];
diff --git a/mutants/mutant-5/swen90006/machine/Machine.java b/mutants/mutant-5/swen90006/machine/Machine.java
index e0c1ba79d8a5e87f3339003160d5d69f35565d30..4b87d94b2de1a473cd87ac29144473d9b61cffb7 100644
--- a/mutants/mutant-5/swen90006/machine/Machine.java
+++ b/mutants/mutant-5/swen90006/machine/Machine.java
@@ -188,7 +188,7 @@ public class Machine
 
       /* check for blank lines */
       if (inst.equals("")){
-	pc = pc + 1;
+	pc = pc + 2;
 	count++;
 	continue;
       }
@@ -266,7 +266,7 @@ public class Machine
 	  throw new InvalidInstructionException();
 	}
 	int offs = parseOffset(toks[1]);
-	pc  = pc = offs;
+	pc  = pc + offs;
 	count++;
 	continue; /* avoid default increment of pc below */
       } else if (toks[0].equals(INSTRUCTION_JZ)){
diff --git a/test/swen90006/machine/BoundaryTests.java b/test/swen90006/machine/BoundaryTests.java
index 8d55d193ccbea0c76c2e46d78f00457abb87f125..7dbe22adead0263f2bc68da7ad12961e5defb1d2 100644
--- a/test/swen90006/machine/BoundaryTests.java
+++ b/test/swen90006/machine/BoundaryTests.java
@@ -240,6 +240,13 @@ public class BoundaryTests
     Machine m = new Machine();
     m.execute(lines);
   }
+  
+  @Test public void EC22()
+  {
+    final List<String> lines = readInstructions("examples/EC22.s");
+    Machine m = new Machine();
+    assertEquals(m.execute(lines), 0);
+  }
   //To test an exception, specify the expected exception after the @Test
  /* @Test(expected = java.io.IOException.class) 
     public void anExceptionTest()
diff --git a/test/swen90006/machine/PartitioningTests.java b/test/swen90006/machine/PartitioningTests.java
index 676b17f21266f61f8f01b615574c8c4da40b25e5..2761b2285235cdf84d6ddcc4666265865173c64f 100644
--- a/test/swen90006/machine/PartitioningTests.java
+++ b/test/swen90006/machine/PartitioningTests.java
@@ -240,6 +240,13 @@ public class PartitioningTests
     Machine m = new Machine();
     m.execute(lines);
   }
+  
+  @Test public void EC22()
+  {
+    final List<String> lines = readInstructions("examples/EC22.s");
+    Machine m = new Machine();
+    assertEquals(m.execute(lines), 0);
+  }
   //To test an exception, specify the expected exception after the @Test
   /*@Test(expected = java.io.IOException.class) 
     public void anExceptionTest()