Cyclic product codes are useful for two reasons. First, they impart a great deal of algebraic structure to a subclass of the class of cyclic codes. Second, because they can be formulated in terms of much shorter (component) codes, their decoding may be considerably simpler than many other types of codes. In this paper both of the properties of cyclic product codes are developed. It is shown that the product of two majority-logic decodable cyclic codes is also majority-logic decodable provided that one of the component codes is one-step decodable. More precisely, if the row-component code can realize minimum distance <tex xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink">d_1</tex> (i.e., correct <tex xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink">[(d_1 -- 1)/2]</tex> errors) with a one-step majority-logic decoder and if the column-component code can realize minimum distance <tex xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink">d_2</tex> with an <tex xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink">L</tex> -step decoder, then the product code can realize distance <tex xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink">d_1 d_2</tex> with an <tex xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink">L</tex> -step decoder. It is also shown that the algebraic structure of cyclic product codes can be applied to establish the exact minimum distance of certain subclasses of BCH codes.