The test area is divided into a grid. At each intersection, RSSI values are recorded Z times. From these, N beacons are chosen, based on strongest average signal strength, and stored in the database as a row of N attributes. During positioning, the mobile device records an RSSI signal M times and passes it the server. The server compares the received RSSI signal data to each row of the stored data, using the following Euclidian Distance algorithm, where M is the stored signal strength, m is the uploaded signal strength, and i is the sequence number of matching groups. The three rows with the smallest Euclidian distance are then used to calculate location.