I managed to bring down the difference to 1c. But there is no room for such maths. It has to be perfect. So there is still something I cannot understand.
In the process of recalculation to reach the 1c difference, I discovered -
a) a later date with higher balance was used to determine the interest! That because an amount in the later date is determined to originate at the beginning of the month.
Example -
1 Jan balance $10
2 Jan balance $8
3 Jan balance $12
3 Jan balance was recognised as the increase is due to transfer of balance, between accounts, existing on 1 Jan. (That was actually overflow of interest earned last year but credited on 3 Jan). In other word, it does not strictly follow chronological order
b) a date that has 2 credit entries, the first entry making the lowest balance is recognised for interest calculation. Sucks that depends on the person which entry he wants to input firstHere it strictly follow timing in chronological order
Example -
1 Mar balance $10 brought forward
1 Mar balance $8
1 Mar balance $12
31 Mar balance $12 carried forward
1 Mar with balance of $8 was recognised as the lowest balance although on the same day there were a deduction of $2 and a credit of $4.
I would have thought that deduction and credit on the same date should be netted off to determined the lowest balance at the end of that day. But no
That's how I lost $31 as there was a deduction of $100 to bring the balance to the lowest and then followed by a credit of $15,000 on the same date that was not recognised![]()
Point a) is quite interesting. It means that cpf is showing the processing date but uses a separate value date which is not published.
Point b) is again probably for their convenience as they don't track daily balance. This also means my steps need to be updated as the lowest balance is not based on eod balance

Here it strictly follow timing in chronological order 