Mathematicaプログラミングで急ぎで質問があるのですが、
プログラミング板のほうは過疎すぎて人がいなさそうなのでこっちで聞きたいと思います。
場違いかも知れませんがお願いします。
使用者が任意で決めた3桁までの自然数をカウントダウンさせる機能を作っているのですが、
次のように記述したら、実行がいつまでも完了せず、原因がわかりません。ご指摘よろしくお願いします。

Clear[a, b, c, st, pre, clo, time, timeup, alarm];
{PopupMenu[Dynamic[a], {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}]
PopupMenu[Dynamic[b], {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}]
PopupMenu[Dynamic[c], {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}],
Dynamic[100*a + 10*b + c]}
pre := DateList[];
clo = 0;
timeup = False;

time[x_List, y_List] :=
 IntegerPart[Part[x, 6] - Part[y, 6]+
 60*(Part[x, 5] - Part[y, 5])+
 60*60*(Part[x, 4] - Part[y, 4])+
 24*60*60*(Part[x, 3] - Part[y, 3])];

alarm[z_, v_List, w_List] :=
While[timeup == False , If[z - clo > 0, If[time[v, w] != clo, clo = time[v, w]] , timeup = True]];

Button["スタート", st = pre ; alarm[100*a + 10*b + c, pre, st]]
Dynamic[100*a + 10*b + c - clo]