たぶん、まぁまたC#のすごーく初歩的な部分でつまづいてるんだと思うんだけど。
どんだけ考えてもデバッグモードで変数追っても分からないのでhelp乞おう。

SourceForge.jpの「Beta」のところに、バグもち最新バージョン2.0.3.4ALPHAあげました。

【2.0.3.3 -> 2.0.3.4 変更箇所】
・駅プロパティに「今日/昨日の乗車客数」表示を追加
・列車を売却した際に返金が発生するように追加した、が動作が不完全なバグもち
 【既知の問題点】
 ・列車の売却計算が正常ではない
 ・新規マップ開始時から所有している3つの列車(3両高速・5両中速・7両低速)を売却しようとするとエラーになる

問題点は上の2つ。
今回追加したコードはTrain.csの180行目あたりにあるんだけど。
TimeLength usedTime = World.world.clock - boughtThisTrain;
long useYears = usedTime / TimeLength.fromDays( 365 );
long reimbersePrice = this.type.price( this.length ) / (useYears+2);
usedTimeにうまく時間が入ってくれてないみたい。
boughtThisTrainの取り扱いがおかしいのかもしれない。

買うときに36行目の
public Train( TrainGroup group, int length, TrainContribution _type, Time now)
: this(group,string.Format("TR{0}",iota++),length,_type,SimpleTrainControllerImpl.theInstance) {
this.boughtThisTrain = now;
}
で引数にTime now追加したものを定義して、
core\controllresにあるTrainTradingDialog.csの550行目あたりで new Trainしてるとこに
for( int i=0; i<(int)count.Value; i++ )
new Train( World.world.rootTrainGroup,
(int)length.Value, selectedTrain, World.world.clock );
って、World.world.clockを渡すようにしたんだけど。
これじゃダメ??