Hola, yo una vez hize algo parecido y despues de pensar un rato sólo se me ocurrió hacerlo en 2 pasos; primero transformar el int16 a unidades (N % 10), decenas ((N % 100) / 10), centenas ((N % 1000) / 100) y millares ((N % 10000) / 1000) y despues con una función estática transformar cada dígito al formato 7seg. Para acelerar un poco la rutina, puse además un flag para ahorrarme ese engorroso cálculo mientras no hubiera cambios en el contador.
Si no tienes problemas de memoria, otra opción sería llevar tú la cuenta de cada dígito en 4 variables separadas. Es bastante más rápido pero necesitas más espacio...
Editado: Menta, me lo has quitado