Hi. Thanks for jumping in. I started to have random bad readings (SOC = 256, Vol = 5) with both power shields (Particle & Sparkfun) so I digged in more.
I happened to have a test button wired to D1 as a trigger to wake up the device from sleep mode (fyi as I was using the power shield to test battery performance for the device coming on/off sleep mode).
I learnt that D0 & D1 are used by the MAX chipset (the one used to gauge fuel levels) in an I2C bus. Therefore, my test button was interfering with the readings. I found the following thread in GitHub: https://github.com/particle-iot/PowerShield/issues/8 with more details about it (it was difficult to find such information). So not a hardware issue either.
Conclusion: don't wire anything to D1 or D0 when using the power shields unless is an I2C device that does not interfere with the address assigned to the MAX chipset.
Hope this thread helps other people making the same mistake.