On Mon, Jul 23, 2012 at 1:11 AM, Andrew Quinn <jaquinn2001 at gmail.com> wrote:
  The insight came when I looked at which keys on the
number pad worked
 and which didn't.  I came up with the following table
 Pressed = Displayed
 1 = 1
 2 = 0
 3 = 1
 4 = 4
 5 = 5
 6 = 4
 7 = 5
 0 = 0
 If you convert this to binary it becomes pretty obvious where the
 problem lies.  The invalid display is for the items marked with * and
 all have the second bit set.  If you mask out the second bit you get
 the displayed value.
 0 = 0000
 1 = 0001
 2 = 0010 *
 3 = 0011 *
 4 = 0100
 5 = 0101
 6 = 0110 *
 7 = 0111 *
 The front panel uses a 7447 BCD to 7 Segment decoder to drive the LED
 modules. If pin 1 (B) on this is not being set when required then the
 behaviour will be what I am seeing..... it isn't that the keypad is
 getting it wrong... but the display is showing the wrong value due to
 a missing bit.
 Need to do a bit more digging here but given that this line is pulled
 to +5V via a resistor on the front panel board I am hoping that the
 problem is either
 a connection problem on the front panel board with the line not being
 pulled up or the 7447 needs to be replaced.  If there was a break in
 the ribbon table to the controller board then the bit would always be
 set and a different set of incorrect values would be displayed.
 Hopefully there isn't a fault on the controller board that is pulling
 the pin to ground. 
It's likely there's a driver chip on the controller board with an open
collector output (something like a 7438). That output could very well
be shorted to ground. That would in fact be my first suspect for this
error.
Camiel.