Setting value to zero not working.

I have a script that is constantly adding to a value inside the FixedUpdate loop. When I press a certain key, it sets those values to zero… So put simply

void Update()
{
        if(Input.GetButtonDown("Fork"))
		{
			MoveNum = 0;
		        ActX = 0;
		}
}

then in the FixedUpdate it goes

    void FixedUpdate () 
	{
        MoveNum += 2;
	    ActX++;
        print ("MOVENUM: " + MoveNum + "ActX: " + ActX);
    }

But when you press down ‘Fork’ it doesn’t show you a zero value for either, it just keeps incrementing. I.e. if you pressed Fork when MoveNum was at 20 and ActX was at 10 the next print would be 22 and 11.

Now this is simplied code. I tried everything to force it to zero (I should also say I am certain that it is recognizing keypresses, I’ve had it set to zero at one point then the next frame go back to whatever it had added up to beforehand).

I’ve been working on it for a hour or two now and I can’t figure out logically why it’s doing it. I can go more into what the actual code is doing beyond this if necessary (The only thing I can think is pertinent right now is that in the original code “Fork” also calls a while loop.)

EDIT:

So I’ve tried a couple more things, I put the button down inside of FixedUpdate and put as many MoveNum = 0 and ActX = 0 as possible, and it still refuses to be set to zero. The only way I’ve found to do it is to pause the game and manually set it to zero from the editor. I’m completely stumped (I can’t believe something that should be so simple is causing so many issues…)

2nd Edit:

Okay, this is getting ridiculous. So I made a new scene, just put a block in there with the most basic version of my script. When you press the button it sets it to zero once. But then if you press it again it just stops printing waits until the adding function brings it up to where the number was before it was zero, then starts printing again.

using UnityEngine;
using System.Collections;

public class TEST : MonoBehaviour 
{
	public int MoveX;
	public int ActX;
	// Use this for initialization
	void Start () 
	{
	
	}
	
	// Update is called once per frame
	void Update () 
	{
		print ("MOVEX: " + MoveX + "ActX: " + ActX);
		if(Input.GetButtonDown("GoBack"))
		{
			MoveX = 0;
			ActX = 0;
		}
	}
	void FixedUpdate()
	{
		ActX = ActX + 1;
		MoveX = ActX + 1;
	}
}

You might want to read this its the execution order of Unity. So what is happening is when you press your Key or whatever, it is setting it to zero but, the next time FixedUpdate gets called its resetting the value to += 2 and ++ logic you have. To test if the values are changing, make a print function before and after your FixedUpdate logic. When you run your program you will see that when you reset the values to zero, the variables take zero but then get changed because FixedUpdate is always incrementing the values because you wrote it that way.