putTempAtDepth() did indeed have a bug in the default case where the SMB is used: if SMB<0 then ice was treated as advecting basal warmth upward from base, generating unreasonably warm ice.  Fixed by treading SMB<0 columns as having vertical velocity (relative to the base) of zero.