Emulating Using a Larger Ciphertext Modulus Size in Bootstrapping

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.

Scaling moduli this small cannot give you precision in bootstrapping. Here are some other posts explaining this issue. Setting security parameters according to 128 bit security (very small CKKS scaling factor) - #7 by ypolyakov, How to calculate manually Error : Degree [X] must be less than or equal to the correction factor [Y]

By the way, the plaintext modulus has no meaning in CKKS (it is only used in BGV/BFV; the README in the latest version explains the cryptocontext parameters for each scheme). If you want to test code efficiently (rather than full size and security) it is better to keep the ciphertext moduli the full size, but work with a small ring dimension.