lol.... Found the problem.
When you made the change to how Gigasampler reads the LSCP files, you forgot to add a value of 1 to all program numbers.
For example, previously 0 0 0 was program 1. Now because you are not adding the 1, 0 0 0 is program 0 and 0 0 1 is program 1.
So every single GM sound is in the wrong place and any called program 0 will not send a program change command.