private void doExecute(final State state) {
		// Calculate the smallest turn to its last position
		final double direction = Tools.sign(Utils.normalRelativeAngle(state.targetAngle - state.robotRadarHeading));
		// Recalculate the turn to get to the enemy based on the worst case
		// movement
		final double turn = Utils.normalRelativeAngle(state.targetAngle + 0.02 * direction - state.robotRadarHeading);

		bot.setTurnRadar(turn);

		if (isInitalScan) {
			// set the gun turn to zero in case we do not go over
			bot.setTurnGun(0);
			// determine how much if any we have overshot our maximum scanning
			// distance
			final double overscan = Math.abs(turn) - Rules.RADAR_TURN_RATE_RADIANS;
			// if we have overscanned, correct our radar heading with our gun
			if (overscan > 0) {
				System.out.printf("Radar Correction = %.4f\n", overscan);
				// supplement the turn
				bot.setTurnGun(Math.min(Rules.GUN_TURN_RATE_RADIANS, overscan) * Tools.sign(turn));
			}
			isInitalScan = false;
		}
	}