diff --git a/fuzzer/Fuzzer.java b/fuzzer/Fuzzer.java
index 81ac1884d94a0fd1b8e46b6a954ed4ab14f585e3..cf6fa773a0ebccdfc5bc1e3f44c83898afb4a82d 100644
--- a/fuzzer/Fuzzer.java
+++ b/fuzzer/Fuzzer.java
@@ -52,7 +52,7 @@ public class Fuzzer {
     // Current stack of instructions
     private static ArrayList<Instruction> instructionStack = new ArrayList<Instruction>();
     // Max stack of instructions before resetting stack
-    private static final int MAX_STACK = 2;
+    private static final int MAX_STACK = 5;
 
     public static void main(String[] args) throws IOException {
         System.out.println(Instruction.getBNF());
@@ -122,22 +122,25 @@ public class Fuzzer {
         switch (runCount){
             case 0:
                 // Test with stack full
-                return generateInput(true, INSTRUCTION_MAX, MAX_STACK_SIZE, false, false);
+                return generateInput(true, INSTRUCTION_MAX, MAX_STACK_SIZE, false, false, false);
             case 1:
                 // Test with stack full
-                return generateInput(true, INSTRUCTION_MAX, MAX_STACK_SIZE - 1, false, false);
+                return generateInput(true, INSTRUCTION_MAX, MAX_STACK_SIZE - 1, false, false, false);
             case 3:
                 // Run static tests and empty stack
-                return getStaticTests() + generateInput(true, INSTRUCTION_MAX, 0, false, false);
+                return getStaticTests() + generateInput(true, INSTRUCTION_MAX, 0, false, false, false);
             case 4:
                 // Test with dynamic probability
-                return generateInput(true, INSTRUCTION_MAX, 0, true, false);
+                return generateInput(true, INSTRUCTION_MAX, 0, true, false, false);
             case 5:
                 // Test with long var names
-                return generateInput(true, INSTRUCTION_MAX, 0, false, true);
+                return generateInput(true, INSTRUCTION_MAX, 0, false, true, false);
+            case 6:
+                // Test with missing vars
+                return generateInput(true, INSTRUCTION_MAX, 0, false, true, true);
         }
         // Run from random stack
-        return generateInput(true, INSTRUCTION_MAX, 0, false, false);
+        return generateInput(true, INSTRUCTION_MAX, 0, false, false, false);
     }
 
     /*
@@ -173,7 +176,7 @@ public class Fuzzer {
             boolean stackFull = rand.nextInt(100) < STACK_FULL_PERCENTAGE;
 
             result.append(generateInput(false,
-                                        INSTRUCTION_MAX, MAX_STACK_SIZE, false, false));
+                                        INSTRUCTION_MAX, MAX_STACK_SIZE, false, false, false));
             // Increment generated
             generated += 1;
         }
@@ -219,14 +222,14 @@ public class Fuzzer {
      * @param numInstructions for the line
      * @return the concatenated input for the program as a string
      */
-    private static String generateInput(boolean correct, long numInstructions, int stackPreload, boolean dynamicProb, boolean longVarNames){
+    private static String generateInput(boolean correct, long numInstructions, int stackPreload, boolean dynamicProb, boolean longVarNames, boolean badInstruct){
         int stackSize = 0;
         int counter = 0;
 
         StringBuilder result = new StringBuilder();
 
         for ( int i = 0 ; i < stackPreload ; i++ ) {
-            result.append(completeInstruction(true, Instruction.PUSH, false));
+            result.append(completeInstruction(true, Instruction.PUSH, false, false));
             stackSize++;
         }
 
@@ -234,7 +237,7 @@ public class Fuzzer {
             while (counter < numInstructions) {
                 Instruction newInstr = Instruction.getRandomInstruction(stackSize, instructionStack, pathwayProb);
                 stackSize = stackSize + newInstr.getStackChange();
-                result.append(completeInstruction(true, newInstr, false));
+                result.append(completeInstruction(true, newInstr, false, false));
                 if (dynamicProb) {
                     incrementStackAndCount(newInstr);
                 }
@@ -245,13 +248,13 @@ public class Fuzzer {
                 Instruction newInstr;
                 if (rand.nextInt(100) < LINE_ERROR_PERCENTAGE){
                     newInstr = Instruction.getRandomInstruction(2, instructionStack, pathwayProb);
-                    result.append(completeInstruction(false, newInstr, longVarNames));
+                    result.append(completeInstruction(false, newInstr, longVarNames, badInstruct));
                     if (dynamicProb) {
                         incrementStackAndCount(newInstr);
                     }
                 } else {
                     newInstr = Instruction.getRandomInstruction(stackSize, instructionStack, pathwayProb);
-                    result.append(completeInstruction(true, newInstr, false));
+                    result.append(completeInstruction(true, newInstr, false, false));
                     if (dynamicProb) {
                         incrementStackAndCount(newInstr);
                     }
@@ -274,7 +277,7 @@ public class Fuzzer {
      * @param instruction type
      * @return string with parameter
      */
-    private static String completeInstruction(boolean correct, Instruction instruction, boolean longVarNames){
+    private static String completeInstruction(boolean correct, Instruction instruction, boolean longVarNames, boolean badInstruct){
         
         String name = "";
         switch (instruction) {
@@ -284,15 +287,18 @@ public class Fuzzer {
                     name = " " + ((Integer) randomRange(VAR_MIN, VAR_MAX)).toString();
                 } else {
                     // If incorrect, increase the range to outside +- int31_t
-
-                    name = " " + ((Long) (randomRange(-1,1)*((long) VAR_MAX + (long) randomRange(0, VAR_MAX)))).toString();
+                    if (!badInstruct) {
+                        name = " " + ((Long) (randomRange(-1, 1) * ((long) VAR_MAX + (long) randomRange(0, VAR_MAX)))).toString();
+                    }
                 }
                 break;
             case LOAD:
             case REM:
                 // If not correct, make up a name not in the list
                 if (!correct){
-                    name = generateName(longVarNames);
+                    if (!badInstruct) {
+                        name = generateName(longVarNames);
+                    }
                 }
                 // If no variables, return empty string
                 else if (vars.size() == 0){
@@ -314,7 +320,9 @@ public class Fuzzer {
                 }
                 // Otherwise get name from exiting, or no name
                 else {
+                    if (!badInstruct) {
                         name = vars.get(randomRange(0, vars.size() - 1));
+                    }
                 }
 
 
@@ -324,7 +332,9 @@ public class Fuzzer {
                 if (correct){
                     name = " " + generateName(false) + ".txt";
                 } else {
+                    if (!badInstruct) {
                         name = " " + generateName(longVarNames) + ".txt";
+                    }
                 }
                 break;
             case PLUS: