diff --git a/Processors/68000Mk2/Implementation/68000Mk2Implementation.hpp b/Processors/68000Mk2/Implementation/68000Mk2Implementation.hpp
index 4c48f88f7..fd38d6ba3 100644
--- a/Processors/68000Mk2/Implementation/68000Mk2Implementation.hpp
+++ b/Processors/68000Mk2/Implementation/68000Mk2Implementation.hpp
@@ -854,6 +854,7 @@ void Processor<BusHandler, dtack_is_implicit, permit_overrun, signal_will_perfor
 
 		BeginState(JSRAddressRegisterIndirect):
 			effective_address_[0] = registers_[8 + instruction_.reg(next_operand_)].l;
+			temporary_address_.l = instruction_address_.l + 2;
 		MoveToState(JSR_push);
 
 		//
@@ -954,6 +955,7 @@ void Processor<BusHandler, dtack_is_implicit, permit_overrun, signal_will_perfor
 				registers_[8 + instruction_.reg(next_operand_)].l +
 				int16_t(prefetch_.w);
 			IdleBus(1);								// n
+			temporary_address_.l = instruction_address_.l + 4;
 		MoveToState(JSR_push);
 
 		//
@@ -995,6 +997,7 @@ void Processor<BusHandler, dtack_is_implicit, permit_overrun, signal_will_perfor
 				program_counter_.l - 2 +
 				int16_t(prefetch_.w);
 			IdleBus(1);								// n
+			temporary_address_.l = instruction_address_.l + 4;
 		MoveToState(JSR_push);
 
 		//
@@ -1036,6 +1039,7 @@ void Processor<BusHandler, dtack_is_implicit, permit_overrun, signal_will_perfor
 		BeginState(JSRAddressRegisterIndirectWithIndex8bitDisplacement):
 			effective_address_[0] = d8Xn(registers_[8 + instruction_.reg(next_operand_)].l);
 			IdleBus(3);								// n nn
+			temporary_address_.l = instruction_address_.l + 4;
 		MoveToState(JSR_push);
 
 		//
@@ -1070,6 +1074,7 @@ void Processor<BusHandler, dtack_is_implicit, permit_overrun, signal_will_perfor
 		BeginState(JSRProgramCounterIndirectWithIndex8bitDisplacement):
 			effective_address_[0] = d8Xn(program_counter_.l - 2);
 			IdleBus(3);								// n nn
+			temporary_address_.l = instruction_address_.l + 4;
 		MoveToState(JSR_push);
 
 #undef d8Xn
@@ -1104,6 +1109,7 @@ void Processor<BusHandler, dtack_is_implicit, permit_overrun, signal_will_perfor
 		BeginState(JSRAbsoluteShort):
 			effective_address_[0] = int16_t(prefetch_.w);
 			IdleBus(1);								// n
+			temporary_address_.l = instruction_address_.l + 4;
 		MoveToState(JSR_push);
 
 		//
@@ -1141,6 +1147,7 @@ void Processor<BusHandler, dtack_is_implicit, permit_overrun, signal_will_perfor
 		BeginState(JSRAbsoluteLong):
 			Prefetch();								// np
 			effective_address_[0] = prefetch_.l;
+			temporary_address_.l = instruction_address_.l + 6;
 		MoveToState(JSR_push);
 
 		//
@@ -1490,9 +1497,6 @@ void Processor<BusHandler, dtack_is_implicit, permit_overrun, signal_will_perfor
 		// JSR [push only; address calculation elsewhere]
 		//
 		BeginState(JSR_push):
-			// Grab the address of the next instruction.
-			temporary_address_.l = program_counter_.l - 4;
-
 			// Update the program counter and prefetch once.
 			program_counter_.l = effective_address_[0];
 			Prefetch();		// np