Fix EAN check digit calculation
[ardour.git] / gtk2_ardour / session_metadata_dialog.cc
index 7973d035bb389f186837b17811a896be92620fe7..88720edc7460c7352c007fb58ee7b8ec67a5a5a2 100644 (file)
@@ -270,15 +270,18 @@ EAN13MetadataField::update_status ()
                // calculate EAN-13 modulo 10 check digit
                int sum = 0;
                const char *p = _value.c_str();
-               for (int i =0; i < 12; i++) {
+               for (int i = 0; i < 12; i++) {
                        char c = p[i] - '0';
                        if (i % 2) {
-                               sum += c;
-                       } else {
                                sum += c * 3;
+                       } else {
+                               sum += c;
                        }
                }
                sum %= 10;
+               if (sum)
+                       sum = 10 - sum;
+
                if (sum == p[12] - '0') {
                        status_label->set_markup (string_compose(
                                                "<span color=\"green\">%1: %2</span>",