Hi Even,
in 3GPP world BCD encoding starts with the least significant nibble. That's why tvb_bcd_dig_to_wmwm_packet_str() behaves like this. Changing it to decode the most significant nibble first would break all the dissectors currently using this function.
The "stop condition" for the most significant nibble set to 0xf is just to detect the filler digit in case you have an odd number of digits. In case of even number, the length itself is sufficient and you do not need a filler, so no "stop condition" is required.
Pascal.