- LY_ASSERT_TYPE (scm_is_integer, gn, 3);
- grace_num = scm_to_int (gn);
+ LY_ASSERT_TYPE (ly_is_rational, g, 2);
+ if (scm_is_true (scm_positive_p (g)))
+ {
+ LY_ASSERT_TYPE (scm_is_integer, m, 1);
+ LY_ASSERT_TYPE (scm_is_integer, g, 2);
+ return Moment (Rational (scm_to_int64 (m),
+ scm_to_int64 (g))).smobbed_copy ();
+ }
+ return Moment (ly_scm2rational (m),
+ ly_scm2rational (g)).smobbed_copy ();