Input.GetButtonDown giving me intermittent results

Input.GetButtonDown is giving me intermittent results. It seems to be working about 80% of the time I am pressing the button down. Is there a way I can improve the checking rate? Here's the code I have written thus far: (I wrote this code myself so I am pretty sure it's something I have done to cause this to not work.)

class GroundMovement
{
    //var enabled = true;//NYI
    var fMinMoveSpeed: float = 5;
    var fMaxMoveSpeed: float = 8;
    var fCurMoveSpeed: float = 5;
    var fAcc: float = .1;// Acceleration
    var bButtonHeld: boolean = false;
    var gravity = 640;
}

class AirMovement
{
    //var enabled = true;//NYI
    var bJumpDown: boolean = false;
    var bJumping: boolean = false;
    //var iAirJumpTotal: int = 0;// NYI how many in air jumps con char perform
    //var iAirJumpsUsed: int = 0;//NYI
    var fMinJumpSpeed: float = 5;
    var fCurJumpSpeed: float = 9;
    var fMaxJumpSpeed: float = 10;
    var fJumpAcc: float = .1; // Acceleration

    var fMinFallSpeed: float = 5;
    var fCurFallSpeed: float = 5;
    var fMaxFallSpeed: float = 10;
    var fFallAcc: float = .1;

    var iHorStyle: int = 1;

    var fJumpMaxTime: float = .25;// Max time key can be held
    @System.NonSerialized var fJumpCurTime: float = 0;
}

var pOneButtons = new Array("P1Horizontal","P1Vertical","P1Jump","P1Fire");
var pTwoButtons = new Array("P2Horizontal","P2Vertical","P2Jump","P2Fire");
var pPlayerController = new Array(pOneButtons, pTwoButtons);

var iPlayerNumber: int = 0;// which player is using this script
var playerControl: boolean = true;// is the player in control
var gMove : GroundMovement;// an instance of our class
var aMove : AirMovement;// an instance of our class
private var moveDirection = Vector3.zero;

function Update () 
{
    if(playerControl == true)
    {
        SetMovement();// Checks status of buttons.
    }
}

function SetMovement()
{
    var controller: CharacterController = transform.GetComponent(CharacterController);
    moveDirection = Vector3.zero;// resets the move which will happen in all cases
    if(controller.isGrounded)
    {
        resetAirMove();// Reset JumpSpeed and FallSpeed
        groundMove();
        moveDirection.y -= gMove.gravity* Time.deltaTime;// applying gravity
    }
    else // He's in the air! 
    {
        airMove();
    }   
    controller.Move(moveDirection * Time.deltaTime);// moving hero time!
}

function groundMove()
{
    if(Input.GetButton(pPlayerController[iPlayerNumber][0]) == true)// Horizontal Movement
    {
        moveDirection = Vector3(Input.GetAxis(pPlayerController[iPlayerNumber][0]),0,0);//Set direction of the move
        moveDirection = transform.TransformDirection(moveDirection);// make position relative to our transform.
        moveDirection *= gMove.fCurMoveSpeed;// Add speed to our move
        if(gMove.fCurMoveSpeed <=  gMove.fMaxMoveSpeed)
        {
            gMove.fCurMoveSpeed += gMove.fAcc;
        }
        if(gMove.fCurMoveSpeed > gMove.fMaxMoveSpeed)
        {
            gMove.fCurMoveSpeed = gMove.fMaxMoveSpeed;
        }
    }

    if(Input.GetButtonUp(pPlayerController[iPlayerNumber][0]) == true)// Horizontal Button is Released
    {
        gMove.fCurMoveSpeed = gMove.fMinMoveSpeed;
    }

    if(Input.GetButtonDown(pPlayerController[iPlayerNumber][2]) == true)// Jumping Button is pressed
    {
        aMove.bJumping = true;
        moveDirection.y += aMove.fCurJumpSpeed;
        aMove.fJumpCurTime = aMove.fJumpMaxTime;
    }
}

function airMove()
{
    //AIR MOVE HORIZONTAL

    if(Input.GetButton(pPlayerController[iPlayerNumber][0]) == true)// Horizontal Movement
    {
        if(aMove.iHorStyle == 1)
        {
            moveDirection = Vector3(Input.GetAxis(pPlayerController[iPlayerNumber][0]),0,0);//Set direction of the move
            moveDirection = transform.TransformDirection(moveDirection);// make position relative to our transform.
            moveDirection *= gMove.fCurMoveSpeed;// Add speed to our move
        }
        else if(aMove.iHorStyle == 2)
        {
            moveDirection = Vector3(Input.GetAxis(pPlayerController[iPlayerNumber][0]),0,0);//Set direction of the move
            moveDirection = transform.TransformDirection(moveDirection);// make position relative to our transform.
            moveDirection *= gMove.fCurMoveSpeed;// Add speed to our move
            if(gMove.fCurMoveSpeed <=  gMove.fMaxMoveSpeed)
            {
                gMove.fCurMoveSpeed += gMove.fAcc;
            }
            if(gMove.fCurMoveSpeed > gMove.fMaxMoveSpeed)
            {
                gMove.fCurMoveSpeed = gMove.fMaxMoveSpeed;
            }
        }
    }

    // AIR MOVE VERTICAL

    if(aMove.bJumping == true)
    {
        jumping();
    }
    else // He's Falling
    {
        falling();
    }   
}

function falling()
{
    moveDirection.y = aMove.fCurFallSpeed;// Set the changes to the target y dir.
    aMove.fCurFallSpeed -= aMove.fFallAcc;// Decrease Speed as he jumps upward.
    if(aMove.fCurFallSpeed > aMove.fMaxFallSpeed)// if Faster than fastest FallSpeed
    {
        aMove.fCurFallSpeed = aMove.fMaxFallSpeed;
    }
    if(aMove.fCurFallSpeed < aMove.fMinFallSpeed)// if Faster than fastest FallSpeed
    {
        aMove.fCurFallSpeed = aMove.fMinFallSpeed;
    }
}

function jumping()
{
    if(Input.GetButton(pPlayerController[iPlayerNumber][2]) == true)// Jumping Button is held
        {
            if(aMove.fJumpCurTime > 0)
            {
                moveDirection.y += aMove.fCurJumpSpeed;// Set the changes to the target y dir.
                aMove.fCurJumpSpeed -= aMove.fJumpAcc;// Decrease Speed as he jumps upward.
                if(aMove.fCurJumpSpeed < aMove.fMinJumpSpeed)// if slower than slowest JumpSpeed
                {
                    aMove.fCurJumpSpeed = aMove.fMinJumpSpeed;
                }
                aMove.fJumpCurTime -= Time.deltaTime;
                if(aMove.fJumpCurTime < 0)
                {
                    aMove.bJumping = false;
                }
            }
        }
        else // Jumping Button is released
        {
            aMove.bJumping = false;
        }
}

function resetAirMove()
{
    aMove.bJumping = false;
    aMove.fCurJumpSpeed = aMove.fMaxJumpSpeed;//Jump starts fast and slows down.
    aMove.fCurFallSpeed = aMove.fMaxFallSpeed;//Fall Starts slow and speeds up.
    aMove.fJumpCurTime = 0; 
}

ok that seems to be the problem. I found a way to fix it thanks! :)