Удалить цифру в числе

У меня есть число, в котором нужно удалить цифру, соседние значения которой дают в сумме больше 14.

Например, 123456789. Берём 9. У неё соседние значения - это 8 и 0. 0 т.к. справа ничего нет. Сумма девятки - 8. Далее 8. Слева и справа 7 и 9. Сумма - 16. Соответственно 8 убираем. Далее 7. Соседние значения - это 6 и 8. Но как мы видим 8 остаётся для дальнейшего выполнения алгоритма и тем не менее сумма этих чисел не более 14. 7 остаётся. И т.д. Вывод: 12345679

Написал этот код недавно, но встал в ступор и забил на него. Сейчас решил вспомнить о нем. В данном примере должно быть выведено 99, ошибка скорее всего у:

SET @lastCount = @x % 10 /* Вычисление последнего значения в числе */
--- Объявление переменных
DECLARE @x INT = 0,
        @lastCount INT = 0,
        @nextCount INT = 0,
        @summ INT = 0,
        @count INT = 0,
        @putnum INT = 0,
        @cnt INT = 0,
        @values INT = 0,
        @x2 int = 0
---
--- Присваивание
    SET @x = 9999
    SET @values = @x
    set @x2 = @x
    SET @putnum = @x
---

--- Цикл подсчёта цифр
WHILE (@values <> 0 or @cnt = 0) BEGIN 
    SET @cnt = @cnt + 1
    SET @values = @values  / 10 
END
---

--- Алгоритм
WHILE @count < @cnt
BEGIN
SET @nextCount = @x / 10 % 10 /* Вичисление следующего значения в числе */
SET @summ = @nextCount + @lastCount /* Сумма двух соседних значений */

/* Если сумма двух соседей какого-то числа больше 14, то оно удаляется, но остаётся в памяти для вычисления следующей суммы другого числа */
IF @summ > 14
    set @putnum = (SELECT STUFF(@putnum, LEN(@putnum) - CHARINDEX(CAST(@nextCount as varchar(100)), REVERSE(@putnum))+1, 1, ''))  
    
set @x2 = @putnum
set @x = cast(@putnum as int)
SET @lastCount = @x % 10 /* Вычисление последнего значения в числе */

set @x = cast(@putnum as int)
SET @count = @count + 1
END
---

PRINT(@putnum)

Ответы (0 шт):