Indoor positioning is getting increased attention due to the availability of larger and more sophisticated indoor environments. Wireless technologies like Bluetooth Low Energy (BLE) may provide inexpensive solutions. In this paper, we propose obstruction-aware signal-loss-tolerant indoor positioning (OASLTIP), a cost-effective BLE-based indoor positioning algorithm. OASLTIP uses a combination of techniques together to provide optimum tracking performance by taking into account the obstructions in the environment, and also, it can handle a loss of signal. We use running average filtering to smooth the received signal data, multilateration to find the measured position of the tag, and particle filtering to track the tag for better performance. We also propose an optional receiver placement method and provide the option to use fingerprinting together with OASLTIP. Moreover, we give insights about BLE signal strengths in different conditions to help with understanding the effects of some environmental conditions on BLE signals. We performed extensive experiments for evaluation of the OASLTool we developed. Additionally, we evaluated the performance of the system both in a simulated environment and in real-world conditions. In a highly crowded and occluded office environment, our system achieved 2.29 m average error, with three receivers. When simulated in OASLTool, the same setup yielded an error of 2.58 m.