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