MM74C922 False Data

I've built a 100x160mm PCB containing 16 Omron B3J Key Switches and other devices. The switches are not laid out as a square grid, but are correctly wired in XY fashion. They feed an MM74C922 prior to being fed on to the Amtel 328 MPU. Everything is apparently working except for one major problem that I'm unable to diagnose.

On pressing certain switches, the 74C922 outputs false data. The false data is always bit 0 of the 4 bit nibble. This is not a software problem and the PCB is correctly wired. I'm unable to see any solder splashes or track breaks. The problem is not related to the debounce time constant, as I've tried various values and oscillator frequencies. Occasionally, if I hold down the switch at address X1Y1, the chip will issue a continuous stream of data available signals - but not always.

The problem appears to be intermittent and unpredictable. Can anyone offer a suggestion to how I can identify the cause of this misbehavior?

On pressing certain switches,

Can you say what switches these are?
What are you using for your external clock?
Have you got supply decoupling on the chip?

They're all from the Omron B3J Series with a quoted bounce time of 5msec max. Switches are B3J-2000, B3J-5000, etc.

No external clock, but using the 74C922 internal clock with COsc =100nF.

Supply decoupling on ever chip using 100nF very close to each power pin onto a ground plane. There's also an on board 5 volt regulator.

I would try increasing the COsc to say 200nF and see if it makes things better / worse.

Many thanks for replying. I've just tried 200nF as suggested, but still getting the same problem. CMask is currently 10uF - giving TC of 100msec!

The data sheet refers to switches with up to 50k on resistance. Could my problem be crosstalk? Would external pull ups (in addition to the ones inside the 74C922) help by reducing the line impedance of the XY matrix?

In a frantic attempt to solve this, I cleaned up all the soldering by removing stray flux and re-soldered some other PTHs. Problem solved.