if (f.value > 0) return fixed<T,p>::trunc(f + fixed<T,p>::half()); else return fixed<T,p>::trunc(f - fixed<T,p>::half());
if (f.value > 0) return trunc(f + fixed<T,p>::half()); else return trunc(f - fixed<T,p>::half());
round(const fixed<T,p>& f){  if (f.value > 0) return fixed<T,p>::trunc(f + fixed<T,p>::half());  else return fixed<T,p>::trunc(f - fixed<T,p>::half());}