 			break;
 		case STATE_READY:
 			processSwitch();
-			if(currentSteps == 0){
-				programState = STATE_RUNNING;
-			}
 			break;
 		case STATE_RUNNING:
 			processSwitch();
 			if(currentSteps == introLadder[rung]){
 				programState = STATE_COMPLETE;
+			}else if(currentSteps != 0 && currentSteps % 75 == 0 && !justJumped){
+				programState = STATE_JUMPING;
+			}
+		case STATE_JUMPING:
+			processSwitch();
+			if(currentJumps == MAX_JUMPS){
+				currentJumps = 0;
+				justJumped = true;
+				programState = STATE_RUNNING;
 			}
 		case STATE_COMPLETE:
 			break;

}

void displayRung(){
	displayNumber(rung, 2, LCD_POSITION_RUNG, 0);
}

void displaySelectedSCR(int line){
	int steps = introLadder[rung];
	
	// Steps
	displayNumber(steps, 3, LCD_POSITION_SCR, line);
	lcd.setCursor(LCD_POSITION_SCR + 3, line);
	lcd.print(":");
	
	// Count
	displayNumber(steps / 75, 1, LCD_POSITION_SCR + 4, line);
	lcd.setCursor(LCD_POSITION_SCR + 5, line);
	lcd.print(":");
	
	// Remainder
	displayNumber(steps % 75, 2, LCD_POSITION_SCR + 6, line);
}

void displayCurrentSCR(int line){
	// Steps
	displayNumber(currentSteps, 3, LCD_POSITION_SCR, line);
	lcd.setCursor(LCD_POSITION_SCR + 3, line);
	lcd.print(":");
	
	// Count
	displayNumber(currentSteps / 75, 1, LCD_POSITION_SCR + 4, line);
	lcd.setCursor(LCD_POSITION_SCR + 5, line);
	lcd.print(":");
	
	// Remainder
	displayNumber(currentSteps % 75, 2, LCD_POSITION_SCR + 6, line);
}

void updateDisplay(){

#define STATE_SETUP    0x1
#define STATE_READY    0x2
#define STATE_RUNNING  0x3
#define STATE_JUMPING  0x4
#define STATE_COMPLETE 0x5

#define LCD_PADDING_ZERO '0'
#define LCD_PADDING_SPACE ' '
#define LCD_POSITION_RUNG 14
#define LCD_POSITION_SCR 8
#define LCD_POSITION_RIGHT 15
#define LCD_LINE_ZERO 0
#define LCD_LINE_ONE 1

#define MAX_JUMPS 7

int programState;
int displayState;
