## MSI/Plessey Specification

MSI Data Corporation introduced MSI from the original Plessey Code.
Therefore, MSI is also known as Modified Plessey. It is mainly used in
retail business.

MSI/Plessey is a fixed-length, non-self-checking symbology.

Most applications still support MSI only for backward compatibility,
because MSI/Plessey is based on Pulse-Width Modulation technology.

MSI requires start/stop characters. MSI is used to encode numeric data
and check digit is required to add at the end of the data.

MSI is sometimes called Plessey Code or MSI/Plessey.

## Structure of a MSI/Plessey symbol

A typical MSI/Plessey barcode has the following structure:

A start character

Message encoded

Check digit

A stop character

MSI uses one or two check digits, which may be calculated in a
number of different ways. As such, it is really up to the software
application to implement and check the check digit(s).

The most common method of calculating MSI check digit is **Modulo 10**.

To calculate the modulo 10 checksum digit, use the following steps:

Create a new number using every other digit from the original code
such that the right-most digit of the new number is the right-most digit
of the old number. For example, in the barcode above the data we encoded
was "8052". In this case, the "new number" is 02.

Take the new number calculated in step 1 and multiply it by 2. In
this case, 02 * 2 is 4.

Add the digits of the value calculated in the previous step (4), and
add it to the digits that were not used in step 1 to form the new number.
In our example, this would be 4 + 8 + 5 = 17. The "4" comes from step 2,
the 8 and 5 come from the "8052" and are the digits that weren't used to
form the new number in step 1. If the result from step 2 were, for
example, 123, then we'd add 1 + 2 + 3 = 6 (plus the digits that weren't
used from step 1).

Do a modulo 10 calculation on the result of step 3. In this case, 17
modulo 10 = 7.

The check digit is the value which, added to the result in step 4,
equals 10. In this case, we must add 3 to 7 to get 10-so the check digit
is 3.