私がPSTR$を使って正確な値を表示してみたところ0.999になるはずの時点(0.003を333回足した時点)では0.99900000000000078でした。 0.99900000000000078と0.999は等しくないのでIF文のTHEN以下は実行されないのが正しい動作です。 PSTR$で0.999と表示されたのでしたら0.003を333倍した値ではないかと思います。 実数型では小数を含む値を計算するごとに誤差が蓄積されていくので「0.003を333倍した値」と「0.003を333回足した値」は異なります。 実数型をSTR$で文字列に変換する場合もセーブする場合も値が丸められるため注意が必要です。 正確さを重視するならば整数で計算(1ずつ加算)して表示の段階で0.003倍すると良いでしょう。