com.nodelab.interest

Type CalcInflation

com.nodelab.0.10175
Instance of Type
Inheriting from Calculator

Type dataValue
org.uninode.Type.displayPatterna {att:org.uninode.Node.type}
org.uninode.Resource.resourceType
org.uninode.Resource.label
org.uninode.Resource.resourceOfList{}
org.uninode.Listable.resourcesReference[org.uninode.Listable.resources] of com.nodelab.interest.CalcInflation

Attribute summaryDefined inUninode® IdPropertiesDefault
Reference[org.uninode.Listable.resources]resourcesListableorg.uninode.0.2001type
StringtoString
This is the display string.
Nodeorg.uninode.0.102
Typetype
The type of an object determines the behaviour and attributes of the object.
Nodeorg.uninode.0.101
StringuriNodeorg.uninode.0.103
StringlabelResourceorg.uninode.0.2041type
List[Type]resourceOfResourceorg.uninode.0.2042type
SignatureresourceType
This defines the type of resource. It can be 'view', 'adapter' or 'action'
Resourceorg.uninode.0.2043type

Method summaryDefined inOverridesProperties
voidactivateListable
voiddesignEditor(WidgetWorkspace ws)Listable
voidgenerateScript(ScriptGenerationInfo info)
Prepare and generate initialization code
ScriptGenerator
voidinstanceScript(ScriptGenerationInfo info)
return either variable name (like 'ave1', found in info), or a constructor call (new ...)
ScriptGenerator
BooleanisResourceOf(Listable listable, Signature aspect)Mixabletype
ListablemixOn(Mixable mix)Mixable
ListablemixWith(Mixable mix)Mixable
StringresourceStringListableintrospection
voidcom.nodelab.java.view.ActivateViewListable
Intcom.nodelab.java.view.ActorCountView
Actorcom.nodelab.java.view.ActorForSoView
Actorcom.nodelab.java.view.AddSourceSoView
voidcom.nodelab.java.view.ConstructorView
voidcom.nodelab.java.view.DesignViewWWView
Dimensioncom.nodelab.java.view.DimensionAtInView
Intcom.nodelab.java.view.DimensionCountView
Dimensioncom.nodelab.java.view.DimensionTypeTyView
voidcom.nodelab.java.view.DragMouseReReReReView
voidcom.nodelab.java.view.GenerateScriptSIViewScriptGenerator
Actorcom.nodelab.java.view.GetActorInView
voidcom.nodelab.java.view.InstallView
voidcom.nodelab.java.view.InstanceScriptSIViewScriptGenerator
Booleancom.nodelab.java.view.IsPerpetualView
voidcom.nodelab.java.view.PrepareView
Collection[Type]com.nodelab.java.view.RequiredDimensionsView
Scenecom.nodelab.java.view.SceneView
WidgetWorkspacecom.nodelab.java.view.WorkspaceView

Script summary
com.nodelab.0.10380
/*
instance Value[Real] quoteRealStep;
instance Value[Real] yieldRealStep;
instance Value[Real] quoteGovStep;
instance Value[Real] yieldGovStep;
instance Value[Real] calcInflationStep;
instance Value[Real] calcAStep;
instance Value[Real] calcBStep;
instance Value[Real] calcCStep;
instance Value[Real] calcDStep;
instance Value[Real] calcRealFwdStep;
instance Value[Real] calcGovFwdStep;
instance Value[Symbol] calcAspect;
instance Value[Symbol] calcGovType;
instance Value[Symbol] calcRealType;
instance Value[String] errorString;
instance Value[Boolean] calculateRealFwd;
instance Value[InstrumentBond] interestA;
instance Value[InstrumentBond] interestB;
instance Value[InstrumentBond] interestC;
instance Value[InstrumentBond] interestD;
instance Value[Time] maturityA;
instance Value[Time] maturityB;
instance Value[Time] maturityC;
instance Value[Time] maturityD;
constructor() {
  View:();
  instance quoteRealStep = new Value(Real, null);
  instance yieldRealStep = new Value(Real, null);
  instance quoteRealStep = new Value(Real, null);
  instance yieldRealStep = new Value(Real, null);
  instance calcInflationStep = new Value(Real, null);
  instance calcAStep = new Value(Real, null);
  instance calcBStep = new Value(Real, null);
  instance calcCStep = new Value(Real, null);
  instance calcDStep = new Value(Real, null);
  instance calcRealFwdStep = new Value(Real, null);
  instance calcGovFwdStep = new Value(Real, null);
  instance calcAspect = new Value(Symbol, #calcInflation);
  instance calcRealType = new Value(Symbol, #quoted);
  instance calcGovType = new Value(Symbol, #quoted);
  instance errorString = new Value(String, '');
  instance calculateRealFwd = new Value(Boolean, false);
  instance forwardGov = new Value(Real, 0);
  instance forwardReal = new Value(Real, 0);
  instance inflation = new Value(Real, 0);
  instance interestA = new Value(InstrumentBond, null);
  instance interestB = new Value(InstrumentBond, null);
  instance interestC = new Value(InstrumentBond, null);
  instance interestD = new Value(InstrumentBond, null);
  instance maturityA = new Value(Time, null);
  instance maturityB = new Value(Time, null);
  instance maturityC = new Value(Time, null);
  instance maturityD = new Value(Time, null);
}
*/
/*
class Boolean isResourceOf(Listable node, Symbol aspect) {
  if (aspect == #views) return true;
  false;
}
class String resourceLabel() "Name of resource" {
  "inflation calculator";
}
introspect Collection[Class] requiredConditions() {
  #(ConditionHistory);
}

Void calculate() {
  Int step = 1.
  instance quoteRealStep.set(null);
  instance yieldRealStep.set(null);
  instance quoteGovStep.set(null);
  instance yieldGovStep.set(null);
  instance calcInflationStep.set(null);
  instance calcAStep.set(null);
  instance calcBStep.set(null);
  instance calcCStep.set(null);
  instance calcDStep.set(null);
  Boolean calcReal := #(#calcA, #calcB, #calcForwardReal).includes(instance calcAspect.value);
  Boolean calcGov := #(#calcC, #calcD, #calcForwardBond).includes(instance calcAspect.value);
  if (calcReal) {
    instance calcRealType.set(null);
    if (instance calcGovType.value == null) instance calcGovType.set(#theoretical);
  }
  if (calcGov) {
    instance calcGovType.set(null);
    if (instance calcRealType.value == null) instance calcRealType.set(#theoretical);
  }
  if (instance calcAspect.value == #calcInflation) {
    if (instance calcRealType.value == null) instance calcRealType.set(#quoted);
    if (instance calcGovType.value == null) instance calcGovType.set(#quoted);
  }
  instance errorString.set("");
  if (instance calcRealType.value == #quoted) {
    if (!instance calculateRealFwd) return null;
    instance quoteRealStep.set(step);
    step = step + 1;
  }
  if (instance calcRealType.value == #quoted) {
    if (!instance calculateGovFwd) return null;
    instance quoteGovStep.set(step);
    step = step + 1;
  }
  if (!calcReal) instance yieldRealStep.set(step);
  if (!calcGov) instance yieldGovStep.set(step);
  if (instance calcAspect.value == #calcInflation) {
    step = step + 1;
    instance inflation.set((((instance forwardGov.value / 100 + 1) / (instance forwardReal.value / 100 + 1)) - 1) * 100);
  }
  instance calcInflationStep.set(step);
  step = step + 1;
  if (instance maturityA.value != instance maturityC.value ||
      instance maturityB.value != instance maturityD.value) 
    instance errorString.set("Warning: different maturities");
  Real x1;
  Real x2;
  Real x3;
  Real t1;
  Real t2;
  Real tf;
  if (calcReal) {
    x1 = 1 + instance forwardGov.value / 100;
    x2 = 1 + instance inflation.value / 100;
    instance forwardReal.set(((x1 / x2) - 1) * 100);
    instance calcRealFwdStep.set(step);
    step = step + 1;
  }
  if (instance calcAspect.value == #calcA) {
    if (instance quoteB.value == null) {
      instance errorString.set("Quote B is missing");
      return;
    }
    x1 = 1 + instance forwardGov.value / 100;
    x2 = 1 + instance inflation.value / 100;
    x3 = 1 + instance quoteB.value / 100;
    t1 = instance maturityA.subtractDate360(Time.now.settlement(3)) / 360;
    t2 = instance maturityB.subtractDate360(Time.now.settlement(3)) / 360;
    t1 = instance maturityB.subtractDate360(instance maturityA) / 360;
    instance quoteA.set((((x3 ^ t2 / (x1 / x2) ^ tf) ^ (1 / t1)) - 1) * 100);
    instance calcAStep.set(step);
  }
  if (instance calcAspect.value == #calcB) {
    if (instance quoteA.value == null) {
      instance errorString.set("Quote A is missing");
      return;
    }
    x1 = 1 + instance forwardGov.value / 100;
    x2 = 1 + instance inflation.value / 100;
    x3 = 1 + instance quoteA.value / 100;
    t1 = instance maturityA.subtractDate360(Time.now.settlement(3)) / 360;
    t2 = instance maturityB.subtractDate360(Time.now.settlement(3)) / 360;
    t1 = instance maturityB.subtractDate360(instance maturityA) / 360;
    instance quoteB.set((((x3 ^ t1 * (x1 * x2) ^ tf) ^ (1 / t2)) - 1) * 100);
    instance calcBStep.set(step);
  }
  if (calcGov) {
    x1 = 1 + instance forwardGov.value / 100;
    x2 = 1 + instance inflation.value / 100;
    instance forwardGov.set(((x1 * x2) - 1) * 100);
    instance calcGovFwdStep.set(step);
    step = step + 1;
  }
  if (instance calcAspect.value == #calcC) {
    if (instance quoteD.value == null) {
      instance errorString.set("Quote D is missing");
      return;
    }
    x1 = 1 + instance forwardReal.value / 100;
    x2 = 1 + instance inflation.value / 100;
    x3 = 1 + instance quoteD.value / 100;
    t1 = instance maturityC.subtractDate360(Time.now.settlement(3)) / 360;
    t2 = instance maturityD.subtractDate360(Time.now.settlement(3)) / 360;
    t1 = instance maturityD.subtractDate360(instance maturityC) / 360;
    instance quoteC.set((((x3 ^ t2 / (x1 / x2) ^ tf) ^ (1 / t1)) - 1) * 100);
    instance calcCStep.set(step);
  }
  if (instance calcAspect.value == #calcD) {
    if (instance quoteC.value == null) {
      instance errorString.set("Quote C is missing");
      return;
    }
    x1 = 1 + instance forwardReal.value / 100;
    x2 = 1 + instance inflation.value / 100;
    x3 = 1 + instance quoteC.value / 100;
    t1 = instance maturityC.subtractDate360(Time.now.settlement(3)) / 360;
    t2 = instance maturityD.subtractDate360(Time.now.settlement(3)) / 360;
    t1 = instance maturityD.subtractDate360(instance maturityC) / 360;
    instance quoteB.set((((x3 ^ t1 * (x1 * x2) ^ tf) ^ (1 / t2)) - 1) * 100);
    instance calcBStep.set(step);
  }
}

Boolean calculateGovFwd() {
  // return true if ok
  if (instance maturityC == null) {
    instance errorString.set("Maturity C missing");
    return false;
  }
  if (instance maturityD == null) {
    instance errorString.set("Maturity D missing");
    return false;
  }
  if (instance quoteC.value == null) {
    instance errorString.set("Quote C missing");
    return false;
  }
  if (instance quoteD.value == null) {
    instance errorString.set("Quote D missing");
    return false;
  }
  Real r1 = instance quoteC.value / 100;
  Real r2 = instance quoteD.value / 100;
  Real t1 = instance maturityC.subtractDate360(Time.now.settlement(3)) / 360;
  Real t2 = instance maturityD.subtractDate360(Time.now.settlement(3)) / 360;
  Real tf = instance maturityD.subtractDate360(instance maturityC) / 360;
  if (tf == 0) {
    instance errorString.set('No difference in maturity');
    return false;
  }
  Real x1 = (1 + r2) ^ t2;
  Real x2 = (1 + r1) ^ t1;
  Real rf = (x1 / x2) ^ (1 / tf) - 1;
  instance forwardGov.set(rf * 100);
  return true;
}
Void calculateGovQuotes() {
  if (instance interestC.value != null) instance modC.set('modified');
  if (instance interestD.value != null) instance modD.set('modified');
  Yield yield = Producer.fetch(#yieldGovBond);
  external #cond_history_resolution = #day;
  external #cond_history = Time.now.addDays(1);
  external #cond_maturity = instance maturityC.subtractDate360(Time.now.settlement(3)) / 360;
  instance quoteC.set(yield.aspectReal(#value));
  external #cond_maturity = instance maturityD.subtractDate360(Time.now.settlement(3)) / 360;
  instance quoteD.set(yield.aspectReal(#value));
  if (!calculateGovFwd()) return;
  instance yieldGovDate.set(yield.toString + ', ' + Time{yield.aspectValue(#time)}.printType(#day));
  calculate();
}
Boolean calculateRealFwd() {
  // return true if ok
  if (instance maturityA == null) {
    instance errorString.set("Maturity A missing");
    return false;
  }
  if (instance maturityB == null) {
    instance errorString.set("Maturity B missing");
    return false;
  }
  if (instance quoteA.value == null) {
    instance errorString.set("Quote A missing");
    return false;
  }
  if (instance quoteB.value == null) {
    instance errorString.set("Quote B missing");
    return false;
  }
  Real r1 = instance quoteA.value / 100;
  Real r2 = instance quoteB.value / 100;
  Real t1 = instance maturityA.subtractDate360(Time.now.settlement(3)) / 360;
  Real t2 = instance maturityB.subtractDate360(Time.now.settlement(3)) / 360;
  Real tf = instance maturityB.subtractDate360(instance maturityA) / 360;
  if (tf == 0) {
    instance errorString.set('No difference in maturity');
    return false;
  }
  Real x1 = (1 + r2) ^ t2;
  Real x2 = (1 + r1) ^ t1;
  Real rf = (x1 / x2) ^ (1 / tf) - 1;
  instance forwardReal.set(rf * 100);
  return true;
}
Void calculateGovQuotes() {
  if (instance interestA.value != null) instance modA.set('modified');
  if (instance interestB.value != null) instance modB.set('modified');
  Yield yield = Producer.fetch(#yieldReal);
  external #cond_history_resolution = #day;
  external #cond_history = Time.now.addDays(1);
  external #cond_maturity = instance maturityA.subtractDate360(Time.now.settlement(3)) / 360;
  instance quoteA.set(yield.aspectReal(#value));
  external #cond_maturity = instance maturityB.subtractDate360(Time.now.settlement(3)) / 360;
  instance quoteB.set(yield.aspectReal(#value));
  if (!calculateRealFwd()) return;
  instance yieldRealDate.set(yield.toString + ', ' + Time{yield.aspectValue(#time)}.printType(#day));
  calculate();
}


Void designView(WidgetWorkspace ws) {
  InstrumentBond bond = InstrumentBond{partAt(0).source};

  ws.addHeader(new Place(0, 0).setDimensions(3, 1).setWeight(1.0, 0.0, #horizontal), this);
  ws.addLabel(new Place(0, 1), "Date");
  Condition condHist = conditionType(ConditionHistory);
  ws.addField(
    new Place(1, 1).setWeight(1.0, 0.0, #horizontal).setDimensions(2, 1), 
    condHist, 
    null);

  ws.addLabel(new Place(0, 2), "Settlement");
  Value[Int] settlement = new Value(Int, 3);
  ws.addField(
    new Place(1, 2).setPrefSize(30, 0).setFill(#none), 
    settlement, 
    null);
  ws.addLabel(new Place(2, 1), "days");

  Value[Time] settlementDate = new Value(Time, null);
  WidgetField f = ws.addField(
    new Place(1, 3).setDimensions(2, 1), 
    settlementDate, 
    null);
  ws.setTrigger(Void(){
    settlementDate.set(Time{condHist.focus}.settlement(settlement.value));
  });
//  f.addListener(Void(){settlement = null});

  ws.addLabel(new Place(0, 4), "Maturity");
  Value[Time] maturity = new Value(Time, bond.aspectValue(#maturity));
  ws.addField(
    new Place(1, 4).setDimensions(2, 1), 
    maturity, 
    null);
  ws.addLabel(new Place(0, 5), "Rate");
  Value[Real] rate = new Value(Real, bond.aspectValue(#bid));
  ws.addField(
    new Place(1, 5).setDimensions(2, 1), 
    rate, 
    null);
  condHist.addListener(Void() {rate.set(bond.aspectValue(#bid))});
  ws.addLabel(new Place(0, 6), "Coupon");
  Value[Real] coupon = new Value(Real, bond.aspectValue(#coupon));
  ws.addField(
    new Place(1, 6).setDimensions(2, 1), 
    coupon, 
    null);
  ws.addLabel(new Place(0, 7), "Dirty price");
  Value[Real] dirtyPrice = new Value(Real, null);
  ws.addField(
    new Place(1, 7).setDimensions(2, 1), 
    dirtyPrice, 
    null);
  ws.setTrigger(Void(){
    dirtyPrice.set(InstrumentBond.dirtyPriceQuote(settlementDate.value, maturity.value, rate.value, coupon.value));
  });
  ws.addLabel(new Place(0, 8), "Clean price");
  Value[Real] cleanPrice = new Value(Real, null);
  ws.addField(
    new Place(1, 8).setDimensions(2, 1), 
    cleanPrice, 
    null);
  ws.setTrigger(Void(){
    cleanPrice.set(InstrumentBond.cleanPriceQuote(settlementDate.value, maturity.value, rate.value, coupon.value));
  });
  ws.addLabel(new Place(0, 9), "Delta");
  Value[Real] delta = new Value(Real, null);
  ws.addField(
    new Place(1, 9).setDimensions(2, 1), 
    delta, 
    null);
  ws.setTrigger(Void(){
    delta.set(InstrumentBond.delta(settlementDate.value, maturity.value, rate.value, coupon.value));
  });
  ws.addLabel(new Place(0, 10), "Duration");
  Value[Real] duration = new Value(Real, null);
  ws.addField(
    new Place(1, 10).setDimensions(2, 1), 
    duration, 
    null);
  ws.setTrigger(Void(){
    duration.set(InstrumentBond.duration(settlementDate.value, maturity.value, rate.value, coupon.value));
  });
  ws.addLabel(new Place(0, 11), "Mod Dur");
  Value[Real] modDuration = new Value(Real, null);
  ws.addField(
    new Place(1, 11).setDimensions(2, 1), 
    modDuration, 
    null);
  ws.setTrigger(Void(){
    modDuration.set(InstrumentBond.modDuration(settlementDate.value, maturity.value, rate.value, coupon.value));
  });
  ws.addLabel(new Place(0, 12), "Convexity");
  Value[Real] convexity = new Value(Real, null);
  ws.addField(
    new Place(1, 12).setDimensions(2, 1), 
    convexity, 
    null);
  ws.setTrigger(Void(){
    convexity.set(InstrumentBond.convexity(settlementDate.value, maturity.value, rate.value, coupon.value));
  });
}



changeBidA
	self interestA value isNil ifFalse: [self modA value: 'modified'].
	self calculate.!

changeBidB
	self interestB value isNil ifFalse: [self modB value: 'modified'].
	self calculate.!

changeBidC
	self interestC value isNil ifFalse: [self modC value: 'modified'].
	self calculate.!

changeBidD
	self interestD value isNil ifFalse: [self modD value: 'modified'].
	self calculate.!

changeCalc
	self calculate.!

changeGovFwd
	self calcGovType setValue: #theoretical.
	self yieldGovDate value: ''.
	self quoteC value: nil.
	self quoteD value: nil.
	self calculate.!

changeGovType
	(self calcGovType value = #theoretical) 
		ifTrue: [
			self maturityC: self maturityA.
			self maturityD: self maturityB.
			self calculateGovQuotes]
		ifFalse: [
			self interestC value isNil ifFalse: [
				self maturityC: self interestC value realtime maturity.
				self quoteC value: self interestC value realtime bid.
				self modC value: ''].
			self interestD value isNil ifFalse: [
				self maturityD: self interestD value realtime maturity.
				self quoteD value: self interestD value realtime bid.
				self modD value: ''].
			self yieldGovDate value: ''.
			self calculate].!

changeInflation
	self calculate.!




changeMaturityA
	self maturityA: (BaliTime fromString: self maturityAText value).
	self interestA value isNil ifFalse: [self modA value: 'modified'].
	self calcRealType value = #theoretical 
		ifTrue: [self calculateRealQuotes]
		ifFalse: [self calculate].!

changeMaturityB
	self maturityB: (BaliTime fromString: self maturityBText value).
	self interestB value isNil ifFalse: [self modB value: 'modified'].
	self calcRealType value = #theoretical 
		ifTrue: [self calculateRealQuotes]
		ifFalse: [self calculate].!

changeMaturityC
	self maturityC: (BaliTime fromString: self maturityCText value).
	self interestC value isNil ifFalse: [self modC value: 'modified'].
	self calcGovType value = #theoretical 
		ifTrue: [self calculateGovQuotes]
		ifFalse: [self calculate].!

changeMaturityD
	self maturityD: (BaliTime fromString: self maturityDText value).
	self interestD value isNil ifFalse: [self modD value: 'modified'].
	self calcGovType value = #theoretical 
		ifTrue: [self calculateGovQuotes]
		ifFalse: [self calculate].!

changeRealFwd
	self calcRealType setValue: #theoretical.
	self yieldRealDate value: ''.
	self quoteA value: nil.
	self quoteB value: nil.
	self calculate.!

changeRealType
	(self calcRealType value = #theoretical) 
		ifTrue: [
			self maturityA: self maturityC.
			self maturityB: self maturityD.
			self calculateRealQuotes]
		ifFalse: [
			self interestA value isNil ifFalse: [
				self maturityA: self interestA value realtime maturity.
				self quoteA value: self interestA value realtime bid.
				self modA value: ''].
			self interestB value isNil ifFalse: [
				self maturityB: self interestB value realtime maturity.
				self quoteB value: self interestB value realtime bid.
				self modB value: ''].
			self yieldRealDate value: ''.
			self calculate].!

fetchA
	| src |
	src := self display user currentSource.
	(src isKindOf: BaliSecInterest) ifFalse: [
		^Dialog warn: 'Current source must be an interest'].
	src checkRealtime: true.
	src realtime isNil ifTrue: [^Dialog warn: 'No data for ' , src name].
	self interestA value: src.
	self maturityA: src realtime maturity.
	self quoteA value: src realtime bid.
	self modA value: ''.
	self calculate.!

fetchB
	| src |
	src := self display user currentSource.
	(src isKindOf: BaliSecInterest) ifFalse: [
		^Dialog warn: 'Current source must be an interest'].
	src checkRealtime: true.
	src realtime isNil ifTrue: [^Dialog warn: 'No data for ' , src name].
	self interestB value: src.
	self maturityB: src realtime maturity.
	self quoteB value: src realtime bid.
	self modB value: ''.
	self calculate.!

fetchC
	| src |
	src := self display user currentSource.
	(src isKindOf: BaliSecInterest) ifFalse: [
		^Dialog warn: 'Current source must be an interest'].
	src checkRealtime: true.
	src realtime isNil ifTrue: [^Dialog warn: 'No data for ' , src name].
	self interestC value: src.
	self maturityC: src realtime maturity.
	self quoteC value: src realtime bid.
	self modC value: ''.
	self calculate.!

fetchD
	| src |
	src := self display user currentSource.
	(src isKindOf: BaliSecInterest) ifFalse: [
		^Dialog warn: 'Current source must be an interest'].
	src checkRealtime: true.
	src realtime isNil ifTrue: [^Dialog warn: 'No data for ' , src name].
	self interestD value: src.
	self maturityD: src realtime maturity.
	self quoteD value: src realtime bid.
	self modD value: ''.
	self calculate.! !

!BaliCalcInflation methodsFor: 'aspects'!


curves
|list|
	list := List new.
	self interestA value isNil ifFalse: [list add: self interestA value].
	self interestB value isNil ifFalse: [list add: self interestB value].
	self interestC value isNil ifFalse: [list add: self interestC value].
	self interestD value isNil ifFalse: [list add: self interestD value].
	list add: (self server element: #yieldGovBond).
	list add: (self server element: #yieldReal).
	^list!



firstSource
	^nil!




maturityA
	^maturityA!

maturityA: aBaliTime
	aBaliTime isNil ifFalse: [
		maturityA := aBaliTime.
		self maturityAText value: (aBaliTime printType: #day)].!

maturityAText
	"This method was generated by UIDefiner.  Any edits made here
	may be lost whenever methods are automatically defined.  The
	initialization provided below may have been preempted by an
	initialize method."

	^maturityAText isNil
		ifTrue:
			[maturityAText := String new asValue]
		ifFalse:
			[maturityAText]!

maturityB
	^maturityB!

maturityB: aBaliTime
	aBaliTime isNil ifFalse: [
		maturityB := aBaliTime.
		self maturityBText value: (aBaliTime printType: #day)]!

maturityBText
	"This method was generated by UIDefiner.  Any edits made here
	may be lost whenever methods are automatically defined.  The
	initialization provided below may have been preempted by an
	initialize method."

	^maturityBText isNil
		ifTrue:
			[maturityBText := String new asValue]
		ifFalse:
			[maturityBText]!

maturityC
	^maturityC!

maturityC: aBaliTime
	aBaliTime isNil ifFalse: [
		maturityC := aBaliTime.
		self maturityCText value: (aBaliTime printType: #day)]!

maturityCText
	"This method was generated by UIDefiner.  Any edits made here
	may be lost whenever methods are automatically defined.  The
	initialization provided below may have been preempted by an
	initialize method."

	^maturityCText isNil
		ifTrue:
			[maturityCText := String new asValue]
		ifFalse:
			[maturityCText]!

maturityD
	^maturityD!

maturityD: aBaliTime
	aBaliTime isNil ifFalse: [
		maturityD := aBaliTime.
		self maturityDText value: (aBaliTime printType: #day)]!

maturityDText
	"This method was generated by UIDefiner.  Any edits made here
	may be lost whenever methods are automatically defined.  The
	initialization provided below may have been preempted by an
	initialize method."

	^maturityDText isNil
		ifTrue:
			[maturityDText := String new asValue]
		ifFalse:
			[maturityDText]!

modA
	"This method was generated by UIDefiner.  Any edits made here
	may be lost whenever methods are automatically defined.  The
	initialization provided below may have been preempted by an
	initialize method."

	^modA isNil
		ifTrue:
			[modA := String new asValue]
		ifFalse:
			[modA]!

modB
	"This method was generated by UIDefiner.  Any edits made here
	may be lost whenever methods are automatically defined.  The
	initialization provided below may have been preempted by an
	initialize method."

	^modB isNil
		ifTrue:
			[modB := String new asValue]
		ifFalse:
			[modB]!

modC
	"This method was generated by UIDefiner.  Any edits made here
	may be lost whenever methods are automatically defined.  The
	initialization provided below may have been preempted by an
	initialize method."

	^modC isNil
		ifTrue:
			[modC := String new asValue]
		ifFalse:
			[modC]!

modD
	"This method was generated by UIDefiner.  Any edits made here
	may be lost whenever methods are automatically defined.  The
	initialization provided below may have been preempted by an
	initialize method."

	^modD isNil
		ifTrue:
			[modD := String new asValue]
		ifFalse:
			[modD]!

quoteA
	^quoteA isNil
		ifTrue:
			[quoteA := nil asValue]
		ifFalse:
			[quoteA]!

quoteB
	^quoteB isNil
		ifTrue:
			[quoteB := nil asValue]
		ifFalse:
			[quoteB]!

quoteC
	^quoteC isNil
		ifTrue:
			[quoteC := nil asValue]
		ifFalse:
			[quoteC]!

quoteD
	^quoteD isNil
		ifTrue:
			[quoteD := nil asValue]
		ifFalse:
			[quoteD]!

quoteGovStep
	^quoteGovStep isNil
		ifTrue:
			[quoteGovStep := nil asValue]
		ifFalse:
			[quoteGovStep]!

quoteRealStep
	^quoteRealStep isNil
		ifTrue:
			[quoteRealStep := nil asValue]
		ifFalse:
			[quoteRealStep]!

yieldGovDate
	^yieldGovDate isNil
		ifTrue:
			[yieldGovDate := String new asValue]
		ifFalse:
			[yieldGovDate]!

yieldGovStep
	^yieldGovStep isNil
		ifTrue:
			[yieldGovStep := nil asValue]
		ifFalse:
			[yieldGovStep]!

yieldRealDate
	^yieldRealDate isNil
		ifTrue:
			[yieldRealDate := String new asValue]
		ifFalse:
			[yieldRealDate]!

yieldRealStep
	^yieldRealStep isNil
		ifTrue:
			[yieldRealStep := nil asValue]
		ifFalse:
			[yieldRealStep]! !
"-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- "!

BaliCalcInflation class
	instanceVariableNames: ''!


!BaliCalcInflation class methodsFor: 'resources'!

description
	"UIMaskEditor new openOnClass: self andSelector: #description"

	
	^CachedImage on: (Image extent: 34@31 depth: 3 bitsPerPixel: 4 palette: (MappedPalette withColors: ((Array new: 5) at: 1 put: ColorValue black; at: 2 put: ColorValue blue; at: 3 put: ColorValue red; at: 4 put: ColorValue white; at: 5 put: ColorValue darkGreen; yourself)) usingBits: (ByteArray fromPackedString:
*/