Thanks, the max reset makes sense now. I also see what you mean about the next cycle, the actual analog read is done outside (before) the switch case and only the lookups from previously stored analog read are done within case. Would be handy to have a comment like below beside them for idiots like me

Or perhaps integrate the read to happen within the case, (though possible you are doing this to allow the value to settle)
int tmphsi = AnaIn::tmphs.Get(); //Reads analog value from Tesla mux selected in previous iteration
int tmpmi = AnaIn::tmpm.Get();; //Reads analog value from Tesla mux selected in previous iteration
I also see there could be some weirdness as tmpmax after case1 will only take into account the sensors read in case 0 as it has no previous max to compare with as it was just reset. One of those sensors in case0 is not connected and set to 0, so tmpmax can only be zero during case1.
It would only be after a full cycle of 3 more GetTemps (back to case 0) that tmpmax will accurately reflect the maximum across all sensors.
Is it possible to just cycle all mux and find the maximums in a single call of getTemps - or is that too slow?
Or another way could be to keep a long term max from the previous complete cycle (this would also provide a little smoothing) ie:
tmphsMax = MAX(tmphsMax, tmphs); //Find maximum between cycle Max and current reading
tmphs = MAX(tmpsLastMax,tmphsMax); //Find maximum from previous cycle maximum, cycle maximum and current value & avoid updating LastMax
in case1:
tmpslastMax = tmphsMax; //Store this cycles max
tmphsMax = 0; //Reset cycle max