SoC, State of Charge, stuck at low value after cold weather

For several years on my Electrons (now OS 3.3.1) I’ve been using

FuelGauge fuel;
volts = fuel.getVCell();
SoC = fuel.getSoC();

This winter, after some cold weather (< -10C), the SoC reading has been stuck for over 3 weeks at a very low, but not constant, level (~35%). Because I use SoC to set the sleep time (using SLEEP_MODE_DEEP), my reporting of data is now only a couple times a day. The electron is inaccessible ‘till spring and for now I can live with a low reporting rate, but I’m very curious why SoC stays low, yet getVCell has increased and now reports voltages from 3.85 to 4.01 . I thought SoC was just a calculation based on the volts. So why, for a week now, has volts from getVCell risen to a normal range that I would expect to generate a SoC of ~70 to 90% yet SoC from getSoC stays around 35% .

I know I am abusing the LiPo battery (the one that came with Electron) with the cold but my question is about the calculation of SoC from volts and why volts would increase to around 4.0v but SoC would stay around ~35% ?

thanks, john

The MAX17043 is a model fuel gauge, which uses a model of the battery discharge profile, along with voltage information, to derive a SoC. My guess is that the sleep mode you are using is powers off the fuel gauge to safe battery (reasonable), however when the device wakes up, it's not staying awake long enough for the model to recalibrate before turning back off. This is only a guess.