function GCD (First, Second : Integer) 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 if First = Second then return abs First; else return Internal (abs First, abs Second); end if; end GCD;