+void
+Moment::operator -= (Moment const &src)
+{
+ main_part_ -= src.main_part_;
+ grace_part_ -= src.grace_part_;
+}
+
+/* Only take the main part of SRC for multiplication. */
+void
+Moment::operator *= (Moment const &src)
+{
+ main_part_ *= src.main_part_;
+ grace_part_ *= src.main_part_;
+}
+
+/* Only take the main part of SRC for division. */
+void
+Moment::operator /= (Moment const &src)
+{
+ main_part_ /= src.main_part_;
+ grace_part_ /= src.main_part_;
+}
+
+/* Only take the main part of SRC for division. */
+void
+Moment::operator %= (Moment const &src)
+{
+ main_part_ %= src.main_part_;
+ grace_part_ %= src.main_part_;
+}
+
+I64
+Moment::den () const
+{
+ /* TODO: ensure MSB == 0 here */
+ return main_part_.den ();
+}
+
+I64
+Moment::num () const
+{
+ return main_part_.num ();
+}
+
+bool
+Moment::to_bool () const
+{
+ return main_part_ || grace_part_;
+}