@@ -846,7 +846,8 @@ convert_datetime_to_datetimestruct(pandas_datetime_metadata *meta,
846846 dt = dt % perday ;
847847 }
848848 else {
849- set_datetimestruct_days ((dt - (perday - 1 )) / perday , out );
849+ set_datetimestruct_days (dt / perday - (dt % perday == 0 ? 0 : 1 ),
850+ out );
850851 dt = (perday - 1 ) + (dt + 1 ) % perday ;
851852 }
852853 out -> hour = dt ;
@@ -860,7 +861,8 @@ convert_datetime_to_datetimestruct(pandas_datetime_metadata *meta,
860861 dt = dt % perday ;
861862 }
862863 else {
863- set_datetimestruct_days ((dt - (perday - 1 )) / perday , out );
864+ set_datetimestruct_days (dt / perday - (dt % perday == 0 ? 0 : 1 ),
865+ out );
864866 dt = (perday - 1 ) + (dt + 1 ) % perday ;
865867 }
866868 out -> hour = dt / 60 ;
@@ -875,7 +877,8 @@ convert_datetime_to_datetimestruct(pandas_datetime_metadata *meta,
875877 dt = dt % perday ;
876878 }
877879 else {
878- set_datetimestruct_days ((dt - (perday - 1 )) / perday , out );
880+ set_datetimestruct_days (dt / perday - (dt % perday == 0 ? 0 : 1 ),
881+ out );
879882 dt = (perday - 1 ) + (dt + 1 ) % perday ;
880883 }
881884 out -> hour = dt / (60 * 60 );
@@ -891,7 +894,8 @@ convert_datetime_to_datetimestruct(pandas_datetime_metadata *meta,
891894 dt = dt % perday ;
892895 }
893896 else {
894- set_datetimestruct_days ((dt - (perday - 1 )) / perday , out );
897+ set_datetimestruct_days (dt / perday - (dt % perday == 0 ? 0 : 1 ),
898+ out );
895899 dt = (perday - 1 ) + (dt + 1 ) % perday ;
896900 }
897901 out -> hour = dt / (60 * 60 * 1000LL );
@@ -908,7 +912,8 @@ convert_datetime_to_datetimestruct(pandas_datetime_metadata *meta,
908912 dt = dt % perday ;
909913 }
910914 else {
911- set_datetimestruct_days ((dt - (perday - 1 )) / perday , out );
915+ set_datetimestruct_days (dt / perday - (dt % perday == 0 ? 0 : 1 ),
916+ out );
912917 dt = (perday - 1 ) + (dt + 1 ) % perday ;
913918 }
914919 out -> hour = dt / (60 * 60 * 1000000LL );
@@ -925,7 +930,8 @@ convert_datetime_to_datetimestruct(pandas_datetime_metadata *meta,
925930 dt = dt % perday ;
926931 }
927932 else {
928- set_datetimestruct_days ((dt - (perday - 1 )) / perday , out );
933+ set_datetimestruct_days (dt / perday - (dt % perday == 0 ? 0 : 1 ),
934+ out );
929935 dt = (perday - 1 ) + (dt + 1 ) % perday ;
930936 }
931937 out -> hour = dt / (60 * 60 * 1000000000LL );
@@ -943,7 +949,8 @@ convert_datetime_to_datetimestruct(pandas_datetime_metadata *meta,
943949 dt = dt % perday ;
944950 }
945951 else {
946- set_datetimestruct_days ((dt - (perday - 1 )) / perday , out );
952+ set_datetimestruct_days (dt / perday - (dt % perday == 0 ? 0 : 1 ),
953+ out );
947954 dt = (perday - 1 ) + (dt + 1 ) % perday ;
948955 }
949956 out -> hour = dt / (60 * 60 * 1000000000000LL );
0 commit comments