if (f.value > 0) return fixed<T,p>(f.value & ~(fixed<T,p>::one().value - 1)); else return fixed<T,p>(f.value | (fixed<T,p>::one().value - 1));
if (f.value > 0) return fixed<T,p>(f.value & ~(fixed<T,p>::one().value - 1), true); else return fixed<T,p>(f.value | (fixed<T,p>::one().value - 1), true);
trunc(const fixed<T,p>& f){  if (f.value > 0) return fixed<T,p>(f.value & ~(fixed<T,p>::one().value - 1));  else return fixed<T,p>(f.value | (fixed<T,p>::one().value - 1));}