From 95ab9af75c880b7fd6721217e61aed23c5069c07 Mon Sep 17 00:00:00 2001 From: Uwe Schulzweida <uwe.schulzweida@mpimet.mpg.de> Date: Wed, 18 Mar 2015 15:07:24 +0000 Subject: [PATCH] cdiDecodeTimevalue: fix rounding error for negativ timevalue --- src/taxis.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/taxis.c b/src/taxis.c index a218664fe..f1ac7ed32 100644 --- a/src/taxis.c +++ b/src/taxis.c @@ -941,7 +941,8 @@ void cdiDecodeTimevalue(int timeunit, double timevalue, int *days, int *secs) if ( timeunit == TUNIT_SECOND ) { *days = (int) (timevalue/86400); - *secs = (int) (timevalue - *days*86400. + 0.5); + double seconds = timevalue - *days*86400.; + *secs = lround(seconds); if ( *secs < 0 ) { *days -= 1; *secs += 86400; }; /* { @@ -954,7 +955,8 @@ void cdiDecodeTimevalue(int timeunit, double timevalue, int *days, int *secs) else if ( timeunit == TUNIT_DAY ) { *days = (int) timevalue; - *secs = (int) ((timevalue - *days)*86400 + 0.5); + double seconds = (timevalue - *days)*86400; + *secs = lround(seconds); if ( *secs < 0 ) { *days -= 1; *secs += 86400; }; /* { -- GitLab