Now I don't want to get involved in this thread... but I thought a 'Learning Remote' (see title of thread) is one where you point an existing Remote to your Learning Remote, it captures the Data Stream, and assigns it to one of your available Buttons. The Learning Remote doesn't need to know if it's a Sony, JVC or a Zenith, all it needs to do is faithfully capture the incomming data and replicate it on demand. If you go and pre-program your Data into your PIC at burn time, it's then not a 'Learning Remote' is it?