Would it be more useful to have a true integer square root rather than overloading the real square root? Something like: T intsqrt(T)(T i) { T bitMask = 1; T result = 0; bitMask <<= T.sizeof * 4 - 1; while (bitMask) { result |= bitMask; if ((result * result) > i) { result &= ~bitMask; } bitMask >>= 1; } return result; } -=mike=-