U said “TDWNSCAN is triggered as long as BCCH is active.”
Or (BDWNACC / TDWNSCAN) * 100 gives u the downtime percentage of BCCH channel. U see the problem ? if BCCH is inactive for 1 hour , this from your point of view will give us TDWNSCAN = 0, or BDWNACC will be 0 -> 0 / 0 = undefined.
TDWNSCAN is just a scan counter independant of the availabilty of BCCH, TCH. Even when BCCH is inactive , TDWNSCAN is scanned that is why u can get downtime of channels.