Tidak semua aspek perilaku perangkat lunak yang tidak disengaja atau tidak diinginkan adalah bug. Yang penting adalah memastikan bahwa perangkat lunak memiliki serangkaian kondisi yang berguna dan terdokumentasi di mana ia dapat diandalkan untuk beroperasi dengan cara yang bermanfaat. Pertimbangkan, misalnya, sebuah program yang seharusnya menerima dua angka, gandakan, dan hasilkan hasilnya, dan yang menghasilkan angka palsu jika hasilnya lebih dari 9,95 tetapi kurang dari 10,00, lebih dari 99,95 tetapi kurang dari 100,00, dll Jika program ini ditulis untuk tujuan memproses angka yang produknya antara 3 dan 7, dan tidak akan pernah dipanggil untuk memproses yang lain, memperbaiki perilakunya dengan 9,95 tidak akan membuatnya lebih berguna untuk tujuan yang dimaksudkan. Namun, hal itu mungkin membuat program lebih cocok untuk tujuan lain.
Dalam situasi seperti di atas, akan ada dua tindakan yang masuk akal:
Perbaiki masalah, jika hal itu praktis.
Tentukan rentang di mana output program akan dapat diandalkan dan nyatakan bahwa program hanya cocok untuk digunakan pada data yang diketahui menghasilkan nilai dalam rentang yang valid.
Pendekatan # 1 akan menghilangkan bug. Pendekatan # 2 mungkin membuat kemajuan kurang cocok untuk beberapa tujuan daripada yang seharusnya, tetapi jika tidak ada kebutuhan untuk program untuk menangani nilai-nilai bermasalah yang mungkin tidak menjadi masalah.
Bahkan jika ketidakmampuan untuk menangani nilai 99,95 hingga 100,0 dengan benar adalah hasil dari kesalahan pemrograman [misalnya memutuskan untuk menghasilkan dua digit di sebelah kiri titik desimal sebelum membulatkan ke satu tempat setelah, sehingga menghasilkan 00,00], itu hanya harus dianggap sebagai bug jika program dinyatakan ditentukan sebagai menghasilkan output yang bermakna dalam kasus tersebut. [Kebetulan, masalah tersebut terjadi pada kode printf Turbo C 2.00; dalam konteks itu, itu jelas bug, tetapi kode yang menyebut printf yang salah hanya akan bermasalah jika bisa menghasilkan output dalam rentang bermasalah].