Manipulating the AnalogButton library

I am trying to use the AnalogButtons library but i can't figure out how to get it to do what i want.
http://www.arduino.cc/playground/Code/AnalogButtons

Using the supplied example, i want to detect a held down button without it first picking up the button press. I highligted the change i made. Think it would be a good change to make to download.

/*
  AnalogButtons,
  
  created 02 Jan 2009 V 0.1
 
 Connect more than one button to a single analog pin, 
 register a call-back function.which gets called when a button
 is pressed or held down for the defined number of seconds. Includes
 software key debouncing which may need to be adjusted, the the second 
 argument to AnalogButtons class. Define the ANALOG_PIN in the constructor
 of AnalogButtons.
 
 The circuit:

 * 5 buttons, 1 side of all buttons connected together to +5V. 
   The other side of each button is connected via a different value
   resister (tested with) 1k, 2k5, 5k8, 10k, 18k to one side of a
   100k resister which is in turn connected to GND. At the point
   where all the different resisters are joined you make a connection
   to your analog input. Basicly a different voltage divider is setup 
   depending upon which button is pressed. You have to configure the 
   Buttons Hi/Low values, see the comments in example code below and the
   AnalogButtons::configure(ANALOG_PIN) function.
   
   More or less than 5 buttons could be added, just pick different values
   of the resister sot hat all buttons have different values which arn't too
   close in size.
   
   I'm not sure what happens when Arduino is powered from batteries and Power V
   drops below V5.
 
 by Neil DUdman and everyone who's ever used Arduino
 
 */
#include "AnalogButtons.h"

#define ANALOG_PIN 0

// A call back function that you pass into the constructor of AnalogButtons, see example
// below. Alternitivly you could extend the Button class and re-define the methods pressed() 
// or held() which are called 
void handleButtons(int id, boolean held)
{  
  if (held) {
    Serial.print("button id="); Serial.print(id); Serial.println(" was pressed and held"); 
  } else{
    Serial.print("button id="); Serial.print(id); Serial.println(" was pressed only");
  }
}

AnalogButtons analogButtons(ANALOG_PIN, 30, &handleButtons);
Button b1 = Button(1, 1013,1014);
Button b2 = Button(2, 1002, 1002);
Button b3 = Button(3, 970, 971);
Button b4 = Button(4, 929, 933);
// Default hold duration is 1 second, lets make it 5 seconds for button5
Button b5 = Button(5, 860, 875, 5);

void setup() 
{
  Serial.begin(9600); 
  Serial.println("Testing your Analog buttons");
  
  analogButtons.addButton(b1);
  analogButtons.addButton(b2);
  analogButtons.addButton(b3);
  analogButtons.addButton(b4);
  analogButtons.addButton(b5);  
 }
 
void loop() 
{  
  // To check values when button are pressed
  analogButtons.checkButtons();
  
  // To configure the MAX/Min values for each 
  // Button, uncomment this line, make sure you've called Serial.begin(9600); 
  // Then in turn hold town each botton, noting the max/min values
  //AnalogButtons::configure(ANALOG_PIN); //delay(1000);
}

When you run the code and press a button it will first read that the button was pressed only. If you press and hold the button it will display that it pressed only then after the designated delay it will display it has been held. I want to find a way so that if its held that is displayed first and not that it was pressed. I feel like i need to add or change a couple of lines in the .cpp file in the library in order to make this work right. Maybe something like if the button is held for less then 500 milliseconds register a press. If its held for longer then 500 milliseconds and equal to the held duration then register a held button. But where and how would i do that?

BTW i do have Visual C++ 6.0 so i am able to edit the library. I've already made one change to the .cpp file. Any time you pushed a button it would automatically do a serial print displaying the button number. This was sure to get in the way of people using this library with the serial monitor.
AnalogButtons.cpp

#include "AnalogButtons.h"

/*
  AnalogButtons,
  
  created 02 Jan 2009 V 0.1
 
 Connect more than one button to a single analog pin, 
 register a call-back function.which gets called when a button
 is pressed or held down for the defined number of seconds. Includes
 software key debouncing which may need to be adjusted, the the second 
 argument to AnalogButtons class. Define the ANALOG_PIN in the constructor
 of AnalogButtons.
 
 The circuit:

 * 5 buttons, 1 side of all buttons connected together to +5V. 
   The other side of each button is connected via a different value
   resister (tested with) 1k, 2k5, 5k8, 10k, 18k to one side of a
   100k resister which is in turn connected to GND. At the point
   where all the different resisters are joined you make a connection
   to your analog input. Basicly a different voltage divider is setup 
   depending upon which button is pressed. You have to configure the 
   Buttons Hi/Low values, see the comments in example code below and the
   AnalogButtons::configure(ANALOG_PIN) function.
   
   More or less than 5 buttons could be added, just pick different values
   of the resister sot hat all buttons have different values which arn't too
   close in size.
   
   I'm not sure what happens when Arduino is powered from batteries and Power V
   drops below V5.
 
 by Neil DUdman and everyone who's ever used Arduino
 
 */



Button::Button() {
}

Button::Button(int iid, int analogLowVal, int analogHighVal, int holdDuration)
{
  id = iid;
  BUTTON_L = analogLowVal;
  BUTTON_H = analogHighVal;
  duration  = holdDuration * 1000;
}

AnalogButtons::AnalogButtons(int ppin, int ddebounce_count, void (*pt2Func)(int, boolean))
{
  pin = ppin;
  pt2Function = pt2Func;
  debounce_count = ddebounce_count;
  counter = 0;
}  

int AnalogButtons::addButton(Button b)
{
  if (buttonsIndex < MAXBUTTONS) {
    buttons[buttonsIndex] = b;
    buttonsIndex++;
  } 
  else return -1;
}

void AnalogButtons::checkButtons()
{
  if (millis() + time > 200) // don't sample analog more than 100ms
  {
    int val = analogRead(pin);   

    // So we can do some reseting if no buttons were pressed
    boolean foundOne = false; 

    for (int i = 0; i < buttonsIndex; i++) 
    {        
      if (val <= buttons[i].BUTTON_H + 4 && val >= buttons[i].BUTTON_L - 4 ) 
      {      
        foundOne = true;

        // First checking for button held down  
        if ( buttons[i].isHeldDown != true && lastButtonPressed == buttons[i].id && ((millis() - previousMillis) > buttons[i].duration) )
        {
          buttons[i].isHeldDown = true;
          buttons[i].held();
          (*pt2Function) (buttons[i].id, true);

          time = millis(); 
          return;            
        }   // Now if a different button has been pressed
        else if (lastButtonPressed !=  buttons[i].id ) {
          if ( lastButtonPressed != buttons[i].id )
          {
            counter ++; 
          }
          if (counter >= debounce_count)
          {
            lastButtonPressed = buttons[i].id;
            counter = 0;
            previousMillis = millis();  // for detecting held             
            buttons[i].pressed();
           [glow] //Serial.println(lastButtonPressed);[/glow]
            (*pt2Function) (buttons[i].id, false);

            time = millis(); 
            return;
          }             
        }
      } 
      else { // This button was not active so it can't any longer be held down
        buttons[i].isHeldDown = false;
      }
    }
    if ( !foundOne ) lastButtonPressed = -1;      
    // no button was detected they must have been released
    //lastButtonPressed = -1;
    time = millis();     
  }
}

// Press each button in turn and note the values returned to 
// Serial monitor
void AnalogButtons::configure(int pin)
{
  // read the analog input into a variable:
  int analogValue = analogRead(pin
    );
  // print the result:
  Serial.println(analogValue);

  // wait 10 milliseconds for the analog-to-digital converter
  // to settle after the last reading:
  delay(1000);    
}