In ckksrns-fhe.cpp line 477, the following function is called in FHECKKSRNS::EvalBootstrap:

` AdjustCiphertext(raised, correction);`

where the correction factor is calculated using the plaintext modulus, ciphertext modulus, and m_correctionFactor. To my understanding, this Adjust Ciphertext code is specific to use inside FHECKKSRNS::EvalBootstrap. FHECKKSRNS::AdjustCiphertext has the following lines (2117-2024 in ckksrns-fhe.cpp):

```
// Scaling down the message by a correction factor to emulate using a larger q0.
// This step is needed so we could use a scaling factor of up to 2^59 with q9 ~= 2^60.
double adjustmentFactor = (targetSF / sourceSF) * (modToDrop / sourceSF) * std::pow(2, -correction);
cc->EvalMultInPlace(ciphertext, adjustmentFactor);
```

My question is, when an actually small ciphertext modulus size is used (in my case, I set Scaling mod size to 20 for experimenting), this step may result in a ciphertext of zeros, when the correction factor becomes large and makes the adjustmentFactor small. Changing the plaintext modulus size did not help. What should I do in this case? Is using such small ciphertext modulus size is always prohibited?

Thank you so much in advance.