def _fixed_np_round(arr, decimals=0, out=None):
 if ((out is not None) and (arr.dtype.kind == 'c')):
  _fixed_np_round(arr.real, decimals, out.real)
  _fixed_np_round(arr.imag, decimals, out.imag)
  return out
 else:
  res = np.round(arr, decimals, out)
  if (out is None):
   def fixup_signed_zero(arg, res):
    if ((res == 0.0) and (arg < 0)):
     return (- np.abs(res))
    else:
     return res
   if isinstance(arr, (complex, np.complexfloating)):
    res = complex(fixup_signed_zero(arr.real, res.real), fixup_signed_zero(arr.imag, res.imag))
   else:
    res = fixup_signed_zero(arr, res)
  return res

def _fixed_np_round ( arr , decimals = 0 , out = None ) : if ( ( out is not None ) and ( arr . dtype . kind == 'c' ) ) : _fixed_np_round ( arr . real , decimals , out . real ) _fixed_np_round ( arr . imag , decimals , out . imag ) return out else : res = np . round ( arr , decimals , out ) if ( out is None ) : def fixup_signed_zero ( arg , res ) : if ( ( res == 0.0 ) and ( arg < 0 ) ) : return ( - np . abs ( res ) ) else : return res if isinstance ( arr , ( complex , np . complexfloating ) ) : res = complex ( fixup_signed_zero ( arr . real , res . real ) , fixup_signed_zero ( arr . imag , res . imag ) ) else : res = fixup_signed_zero ( arr , res ) return res
a slightly bugfixed version of np .