POSTNET  
BACKGROUND INFORMATION  
PostNet was developed by the United States Postal Service (USPS) to allow faster sorting and routing of mail. Postnet is the familiar, funnylooking bar codes often printed on envelopes and business return mail. A typical PostNet bar code is:  
Unlike most other bar codes in which data is encoded in the width of the bars and spaces, PostNet actually encodes data in the height of the bars. That is why when you look at the bar code all the bars are essentially the same width but vary only in height. The bar code itself can encode either a standard 5digit Zip Code, a Zip+4 code, or a full 11point delivery point code. The 5Digit zip code and Zip+4 code are familiar to virtually anyone who lives in the United States. All addresses include, at a minimum, a 5digit zip code (example 80122). If all you have to work with is this 5digit code, it may be encoded in PostNet symbology. If you have the full Zip+4 code (example 801221905), the entire 9digit code may also be encoded in Postnet. A lesser known coding mechanism is a "Delivery Point Code" which is used to identify all 125 million delivery points in the United States. The Delivery Point Code is a normal Zip+4 code plus an additional 2 digits of information. The two additional digits are normally made up of the last two digits of the street address or PO Box. For example, if your zip code is "801222014" and your street address is "3801 E. Arapahoe Road", your Delivery Point Code would be 80122201401. The final "01" is taken from the last two digits of the 3801 street address. PostNet bar codes, thus, encode either 5, 9, or 11 digits of information. Any other number of digits is invalid. 

COMPUTING THE CHECKSUM DIGIT  
PostNet bar codes always include a modulo 10 check digit. Before a PostNet symbol may be encoded, a checksum digit must be calculated to be subsequently appended to the end of the bar code. The checksum digit is a simple modulo 10 calculation of the sum of the all the digits that are being coded. The steps for calculating the check digit are as follows: 1. Sum the total of all individual digits being encoded. For example, 801221905 would be calculated as 8 + 0 + 1 + 2 + 2 + 1 + 9 + 0 + 5 = 28. 2. Determine the value that, when added to the sum, produces a value evenly divisible by 10. For example, 28 + 2 = 30, so the value is 2. 3. The check digit is the value calculated in step 2. In this case the check digit is 2. 

ENCODING THE SYMBOL  
PostNet bar codes are made up of full and half bars. Each bar represents a binary value (0 or 1), and 5 bars together form a single character. In the following text, we will discuss the encoding of the bar code by considering that the number "1" represents a "tall" bar, whereas a "0" represents a "half" bar. The the numbers "10010" would represent a full bar followed by two half bars followed by a full bar and a final half bar. This would be printed in the bar code as:  
STRUCTURE OF A POSTNET BARCODE  
A PostNet bar code has the following structure: 1. Frame bar, encoded as a single 1. 2. 5, 9, or 11 data characters properly encoded (see encoding table below). 3. Check digit, encoded using encoding table below. 4. Final frame bar, encoded as a single 1. 

POSTNET ENCODING TABLE  
This table indicates how to encode each digit of a PostNet bar code. Note that the encoding is expressed as "0" (half bar) or "1" (full bar).  


ENCODING EXAMPLE  
We will now code the Zip+4 code used in the checksum example (801221905) using PostNet. Now we need to encode each digit using the encoding table above. 1. The START Frame bar: 1. 2. The digit "8": enocded as 10010. 3. The digit "0": enocded as 11000. 4. The digit "1": enocded as 00011. 5. The digit "2": enocded as 00101. 6. The digit "2": enocded as 00101. 7. The digit "1": enocded as 00011. 8. The digit "9": enocded as 10100. 9. The digit "0": enocded as 11000. 10. The digit "5": enocded as 01010. 11. The check digit "2": encoded as 00101. 12. The STOP Frame bar: 1. This is shown in the following graphical representation where the bar code has been sectionedoff into areas that reflect each of the 12 components just mentioned. 
