function GCD (First, Second : Natural ) return Natural is function Internal (First, Second : Natural) return Natural is begin if Second = 0 then return First; else return GCD(Second, First mod Second ); end if; end Internal; begin return Internal (abs First, abs Second); end GCD;