procedure mdr(n)
   local i

   until *n = 1 do {
      i := 1
      every i *:= !n
      n := i
      }

   return n

end