Thanks for the quick response.
I have tried the code and it works. However there is an issue. I have a 4x4 setup but it acts like a 4x3 keypad. I can get digits 1 through 12. If I change the define as below to 4 col then nothing works. Im still checking but I think this is the same hardware setup I had before and it worked as a 4x4. Any suggestions?

TRISB = %11110000 'PortB first four bits outputs second four bits inputs

include "KeyPad.bas"

DEFINE KEYPAD_ROW 4 ' 4 ROW keypad
DEFINE KEYPAD_ROW_PORT PORTB ' ROW port = PORTB
DEFINE KEYPAD_ROW_BIT 4 ' ROW0 = PORTB.4
'DEFINE KEYPAD_COL 3 ' 3 COL keypad
DEFINE KEYPAD_COL 4 ' 4 COL keypad
DEFINE KEYPAD_COL_PORT PORTB ' COL port = PORTB
DEFINE KEYPAD_COL_BIT 1 ' COL0 = PORTB.1
DEFINE KEYPAD_DEBOUNCEMS 20 ' debounce delay = 20 50 mSec
DEFINE SCAN_ONCE 1

OPTION_REG.7=0 ' Enable internal crap pull-up
ADCON1=7 ' disable ADCs
PORTB = 0 '

ByteA var byte '