Lerping between multiple materials

Hi

I have a few scripts with various different material lerps and they all work fine.
I now have an plane object (crosshair) that I want to have 4 different materials depending on a timer.
But the script doesnt work at all. Is it possible to change between multiple materials?
If not, any suggestions? I can get it to work using GUI but the position changes to where I have the object.

Cheers

using UnityEngine;
using System.Collections;

public class Crosshair : MonoBehaviour {
	
	public Material materialDefault;
    public Material materialRed;
	public Material materialBlue;
    public Material materialGreen;
	public Material materialYellow;
	
	// Use this for initialization
	void Start () {
	
		 renderer.material = materialDefault;
	}
	
	// Update is called once per frame
	void Update () {
		
		if(Timing.red)
			renderer.material.Lerp(materialDefault, materialRed, 1.0f);
		else if(Timing.blue)
			renderer.material.Lerp(materialDefault, materialBlue, 1.0f);
		else if(Timing.green)
			renderer.material.Lerp(materialDefault, materialGreen, 1.0f);
		else if(Timing.yellow)
			renderer.material.Lerp(materialDefault, materialYellow, 1.0f);
		
	}
}

Why not just have one material with 4 textures that you can lerp between inside of the shader?

Thanks for the suggestion but I have no experience with shaders.
Just looking through them now, they cant access script variables can they?
Because most of my stuff is based around a timing class and all other classes get their data passed from it and the material changes would also require this to work the way I hope