| Probably, the best specification would be | | gcd n m :: Integer = if n == 0 && m == 0 then 0 | else | greatest integer that divides both n and m Well, thank you all those that have contributed. My original point was simply to say greatest (positive) integer that divides both n and m but debate seems to have swirled round whether (gcd 0 0) should be 0 or an error. Currently in H98 it's an error; but it is the kind of thing I'm willing to change IF there is a consensus, because it will only make more programs work. Is there a consensus that such a change would be desirable? If someone could write a sentence or two to explain why gcd 0 0 = 0, (ideally, brief ones I can put in the report by way of explanation), I think that might help those of us who have not followed the details of the discussion. Simon