diff --git a/SAS/TMSS/backend/src/tmss/tmssapp/conversions.py b/SAS/TMSS/backend/src/tmss/tmssapp/conversions.py index b675b621c80a100226d9939c1b3d9bd242b30dec..f070832a7ec5b2ee1a224f40c6306996fb2b4354 100644 --- a/SAS/TMSS/backend/src/tmss/tmssapp/conversions.py +++ b/SAS/TMSS/backend/src/tmss/tmssapp/conversions.py @@ -446,8 +446,16 @@ def coordinates_timestamp_and_station_to_target_transit(pointing: Pointing, time return target_transit if pointing.direction_type == 'SUN': - target_transit = observer.noon(time=Time(timestamp), n_grid_points=n_grid_points, which=which) - return target_transit.to_datetime() + try: + target_transit = observer.noon(time=Time(timestamp), n_grid_points=n_grid_points, which=which) + return target_transit.to_datetime() + except ValueError: + # workaround for astropy bug + # on rare occasions, astropy can't compute noon. + # probably due to rounding/precision. + # try again (recurse) with a slightly altered timestamp and n_grid_points + # in the very worst case this leads to a recursion stack overflow + return coordinates_timestamp_and_station_to_target_transit(pointing, timestamp + timedelta(minutes=1), observer, n_grid_points+1, which) if pointing.direction_type == 'MOON': if which != 'nearest':