can't get sound to fade out, only to fade in

Think o f this code as engine noise. when I press W (gas peddle) to move, the engine sound fades up to a rev, when I let up on W, I want the engine sound to fade down. I have working scripts that fade in and out onTriggerEnter and onTriggerExit and this is basically that with keypress substituted for entering trigger zones

using UnityEngine;
using System.Collections;

public class waterFading : MonoBehaviour {

	AudioSource source;
	public float speedIn = .4f;
	public float speedOut = .1f;
	public float maxV = .5f;
	public float minV = .05f;
	public bool moving;


	void Awake() {
			source = GetComponent<AudioSource>();
	}
		void Start(){
			moving = false;
		}
	void Update(){
		if(moving == false)
		{
			if(source.volume > minV)
			{
				source.volume -= Time.deltaTime * speedOut;
				}
		}
		if (Input.GetKey(KeyCode.W))
		{
			moving = true;
			if(source.volume < maxV)
				source.volume += Time.deltaTime * speedIn;
	}
		if (Input.GetKeyUp(KeyCode.W))
		{
			moving = false;
		}
	
			}
		}

OMG!!! it never fails, just when I give up and I post a question here I figure it out. That script above actually works. Being attempt #300, I assumed it would fail before trying it- even though it looked like it would work like attempts 1 -299, and jumped straight to Unity answers. My mistake was putting the fadeout function in the GetKeyUp so it only faded out for that split second. I needed something constant - like the GetKey - where it continually fades in while the key is pressed instead of a one shot key release. but i could have sworn I tried this already. But I think I combined the GetKeyUp with the moving = false statement and still had the fadeout in the getkeyup. I don’t know. but it works so I am happy.