The BOUND program calculates the bound states of a complex formed from two interacting particles using coupled-channel methods. It is particularly suitable for the bound states of atom-molecule and molecule-molecule Van der Waals complexes and for the near-threshold bound states that are important in ultracold physics. It uses a basis set for all degrees of freedom except $R$, the separation of the centres of mass of the two particles. The Schrodinger equation is expressed as a set of coupled equations in $R$. Solutions of the coupled equations are propagated outwards from the classically forbidden region at short range and inwards from the classically forbidden region at long range, and matched at a point in the central region. Built-in coupling cases include atom + rigid linear molecule, atom + vibrating diatom, atom + rigid symmetric top, atom + asymmetric or spherical top, rigid diatom + rigid diatom, and rigid diatom + asymmetric top. Both programs provide an interface for plug-in routines to specify coupling cases (Hamiltonians and basis sets) that are not built in. With appropriate plug-in routines, BOUND can take account of the effects of external electric, magnetic and electromagnetic fields, locating bound-state energies at fixed values of the fields. The related program FIELD uses the same plug-in routines and locates values of the fields where bound states exist at a specified energy. As a special case, it can locate values of the external field where bound states cross scattering thresholds and produce zero-energy Feshbach resonances. Plug-in routines are supplied to handle the bound states of a pair of alkali-metal atoms with hyperfine structure in an applied magnetic field.