InvokeRepeating won't increment less than 1

I have a text that displays gold. The gold goes up on an increment, which starts off at 1 gold per second. There is an upgrade button which adds 1 gold per second. Everything works fine, but when I upgrade to 2 gold per second, it goes up every second as “2, 4, 6, 8”. However I am after a different effect, I always want it to go up by 1 gold, but more quickly. So if I have 2 gold per second, I want it to go up by 1 gold every 0.5 second. If I have 5 gold per second, I want it to go up by 1 gold every 1/5 second, however my code is not working. As you can see in my code, I am trying to get InvokeRepeating to execute in intervals of 1/goldPerSecond. Any ideas?

	public float gold = 0;
	public float goldPerSecond = 1.0f;

	void Start(){
		AutoGold ();

	private void AutoGold(){
		float interval = 1 / goldPerSecond;

		InvokeRepeating ("DisplayGold", 0f, interval);

	private void DisplayGold(){
		Text GoldDisplay = GetComponent<Text> ();
		gold += 1;
		GoldDisplay.text = "Gold: " + gold;

Instead of adding more Invoke you should reduce interval. I am assuming you will call this function on Upgrade button;

// stop old invoke
// increase gold per second  
// get new interval
  float interval = 1f / goldPerSecond;
  InvokeRepeating ("DisplayGold", 0f, interval);

Thank you, I forgot about the CancelInvoke method. That got it working just the way I wanted!