public TruthValue projectionTruth(long targetTime, long currentTime) { TruthValue newTruth = null; if (!stamp.isEternal) { newTruth = TruthFunctions.eternalize(truth); if (targetTime != Stamp.ETERNAL) { long occurrenceTime = stamp.occurrenceTime; double factor = TruthFunctions.temporalProjection(occurrenceTime, targetTime, currentTime); float projectedConfidence = (float)(factor * truth.confidence); if (projectedConfidence > newTruth.confidence) { newTruth = TruthValue.make(truth.frequency, projectedConfidence); } } } if (newTruth == null) { newTruth = truth.clone(); } return(newTruth); }