diff --git a/libgnucash/engine/gnc-numeric.cpp b/libgnucash/engine/gnc-numeric.cpp
index 040845a31f..b99cb8586f 100644
--- a/libgnucash/engine/gnc-numeric.cpp
+++ b/libgnucash/engine/gnc-numeric.cpp
@@ -1004,6 +1004,10 @@ gnc_numeric_convert(gnc_numeric in, int64_t denom, int how)
     {
         return convert(GncNumeric(in), denom, how);
     }
+    catch (const std::invalid_argument& err)
+    {
+        return gnc_numeric_error(GNC_ERROR_OVERFLOW);
+    }
     catch (const std::overflow_error& err)
     {
         return gnc_numeric_error(GNC_ERROR_OVERFLOW);
@@ -1012,6 +1016,10 @@ gnc_numeric_convert(gnc_numeric in, int64_t denom, int how)
     {
         return gnc_numeric_error(GNC_ERROR_OVERFLOW);
     }
+    catch (const std::domain_error& err)
+    {
+        return gnc_numeric_error(GNC_ERROR_REMAINDER);
+    }
 }