diff --git a/libs/freetdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_main.c b/libs/freetdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_main.c
index 6fba4e9e0a..0d52dfada7 100644
--- a/libs/freetdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_main.c
+++ b/libs/freetdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_main.c
@@ -483,14 +483,17 @@ static void ftdm_sangoma_ss7_process_state_change (ftdm_channel_t * ftdmchan)
 			i++;
 		}
 
-		/* check if the end of pulsing character has arrived or the right number of digits */
-		if (ftdmchan->caller_data.dnis.digits[i] == 0xF) {
+		/* check if the end of pulsing (ST) character has arrived or the right number of digits */
+		if (ftdmchan->caller_data.dnis.digits[i-1] == 'F') {
 			SS7_DEBUG_CHAN(ftdmchan, "Received the end of pulsing character %s\n", "");
 
+			/* remove the ST */
+			ftdmchan->caller_data.dnis.digits[i-1] = '\0';
+			
 			/*now go to the RING state */
 			ftdm_set_state_locked (ftdmchan, FTDM_CHANNEL_STATE_RING);
 			
-		} else if (i >= g_ftdm_sngss7_data.min_digits) {
+		} else if (i > g_ftdm_sngss7_data.min_digits) {
 			SS7_DEBUG_CHAN(ftdmchan, "Received %d digits (min digits = %d)\n", i, g_ftdm_sngss7_data.min_digits);
 
 			/*now go to the RING state */
diff --git a/libs/freetdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_support.c b/libs/freetdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_support.c
index 1e8e54a5ee..5086d11a71 100644
--- a/libs/freetdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_support.c
+++ b/libs/freetdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_support.c
@@ -306,9 +306,9 @@ uint8_t copy_tknStr_from_sngss7(TknStr str, char *ftdm, TknU8 oddEven)
 		j = 0;
 
 		for (i = 0; i < str.len; i++) {
-			sprintf(&ftdm[j], "%d", (str.val[i] & 0x0F));
+			sprintf(&ftdm[j], "%X", (str.val[i] & 0x0F));
 			j++;
-			sprintf(&ftdm[j], "%d", ((str.val[i] & 0xF0) >> 4));
+			sprintf(&ftdm[j], "%X", ((str.val[i] & 0xF0) >> 4));
 			j++;
 		}
 
@@ -318,6 +318,8 @@ uint8_t copy_tknStr_from_sngss7(TknStr str, char *ftdm, TknU8 oddEven)
 		} else {
 			ftdm[j] = '\0';
 		}
+
+		
 	} else {
 		SS7_ERROR("Asked to copy tknStr that is not present!\n");
 		return 1;