CHIRP is working as intended and sending the correct settings to the radio (I dug out my BTECH UV-50X3 to double check). You are just don have a complete understanding how CHIRP is configured for the various selective call scenarios.
When Tone Mode is set to DTCS, the value in the DTCS Code field is used for both the TX DTCS code and the RX DTCS code. The default value (023) in the DTCS Rx Code field is unused and ignored by CHIRP.
Tone Mode = DTCS
DTCS Code = (value used for both TX DTCS code and RX DTCS code)
DTCS Rx Code = unused
The only time you will use the DTCS Code field and DTCS Rx Code field at the same time is when they are asymmetrical (not the same). In that case you would be using the Cross Mode field to set it up.
Tone Mode = Cross
Cross Mode = DTCS->DTCS
DTCS Code = (value used for TX code and not the same as RX code)
DTCS Rx Code = (value used for RX code and not the same as TX code)
So when Tone Mode is set to Cross and Cross Mode is set to DTCS->DTCS and both the DTCS Code field and the DTCS Rx Code field are set to the same DTCS code value, CHIRP notices and changes Tone Mode to DTCS and changes the unused and ignored DTCS Rx Code field to the default value (023) which would be the preferred equivalent.
In addition, you must have disabled Hide Unused Fields (enabled is the default). With Hide Unused Fields enabled, the DTCS Rx Code field would have been " " {blank} to indicate that this field is not used when Tone Mode is set to DTCS. I would recommend that you re-enable Hide Unused Fields so that the unused and ignored fields will be once again hidden. Then you will know that "blank" fields don't require a value.
For more information, you can review these guides.
"Understanding CHIRP's columns":https://chirp.danplanet.com/projects/chirp/wiki/MemoryEditorColumns
"CHIRP Programming Reference":http://kc9hi.dyndns.org/uv5r/programming/CHIRP%20Guide.pdf
Jim KC9HI