       timesToLoop = 0;
       loopCounter = 0;
       howManyInnerLoopsMacroHas = 0;
+      macroMetadataIndex = 0;
       isInputting = true;
       isInputtingDelayed = false;
       previousInputDelay = millis();

      if (currentMacroIndexRunning < macroInputsToRun) {
        //Serial.print("A BEFORE currentMacroIndexRunning = ");
        //Serial.println(currentMacroIndexRunning);
        if (howManyInnerLoopsMacroHas <= 0) {
          // Do stuff normally
          Serial.println("This macro does not have inner loops");
          currentMacroIndexRunning++;
        }
        if (howManyInnerLoopsMacroHas > 0) {
          // This is where inner loop logic goes (???)
          Serial.println("This macro has inner loops");
          if (inner_loop_metadata[macroMetadataIndex][1] > 0 && inner_loop_metadata[macroMetadataIndex][3] > 0) {
            // Do something

      timesToLoop = 0;
      loopCounter = 0;
      howManyInnerLoopsMacroHas = 0;
      macroMetadataIndex = 0;
      isInputtingDelayed = false;
      isInputting = false;
      macroInputsToRun = serial_rx_buffer[1];
